mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-24 02:20:13 +01:00
🎨 Improve kernel stability by eliminating some data races https://github.com/siyuan-note/siyuan/issues/9842
This commit is contained in:
parent
f9d476ebf5
commit
1d54de679f
7 changed files with 83 additions and 62 deletions
|
|
@ -39,7 +39,7 @@ import (
|
|||
var ErrFailedToConnectCloudServer = errors.New("failed to connect cloud server")
|
||||
|
||||
func CloudChatGPT(msg string, contextMsgs []string) (ret string, stop bool, err error) {
|
||||
if nil == Conf.User {
|
||||
if nil == Conf.GetUser() {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ func CloudChatGPT(msg string, contextMsgs []string) (ret string, stop bool, err
|
|||
request := httpclient.NewCloudRequest30s()
|
||||
_, err = request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
SetBody(payload).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/ai/chatGPT")
|
||||
if nil != err {
|
||||
|
|
@ -99,7 +99,7 @@ func CloudChatGPT(msg string, contextMsgs []string) (ret string, stop bool, err
|
|||
}
|
||||
|
||||
func StartFreeTrial() (err error) {
|
||||
if nil == Conf.User {
|
||||
if nil == Conf.GetUser() {
|
||||
return errors.New(Conf.Language(31))
|
||||
}
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ func StartFreeTrial() (err error) {
|
|||
request := httpclient.NewCloudRequest30s()
|
||||
_, err = request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/user/startFreeTrial")
|
||||
if nil != err {
|
||||
logging.LogErrorf("start free trial failed: %s", err)
|
||||
|
|
@ -124,7 +124,7 @@ func DeactivateUser() (err error) {
|
|||
request := httpclient.NewCloudRequest30s()
|
||||
resp, err := request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/user/deactivate")
|
||||
if nil != err {
|
||||
logging.LogErrorf("deactivate user failed: %s", err)
|
||||
|
|
@ -150,7 +150,7 @@ func SetCloudBlockReminder(id, data string, timed int64) (err error) {
|
|||
resp, err := request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetBody(payload).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/calendar/setBlockReminder")
|
||||
if nil != err {
|
||||
logging.LogErrorf("set block reminder failed: %s", err)
|
||||
|
|
@ -182,7 +182,7 @@ func LoadUploadToken() (err error) {
|
|||
request := httpclient.NewCloudRequest30s()
|
||||
resp, err := request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/upload/token")
|
||||
if nil != err {
|
||||
logging.LogErrorf("get upload token failed: %s", err)
|
||||
|
|
@ -228,8 +228,8 @@ func refreshSubscriptionExpirationRemind() {
|
|||
|
||||
defer logging.Recover()
|
||||
|
||||
if IsSubscriber() && -1 != Conf.User.UserSiYuanProExpireTime {
|
||||
expired := int64(Conf.User.UserSiYuanProExpireTime)
|
||||
if IsSubscriber() && -1 != Conf.GetUser().UserSiYuanProExpireTime {
|
||||
expired := int64(Conf.GetUser().UserSiYuanProExpireTime)
|
||||
now := time.Now().UnixMilli()
|
||||
if now >= expired { // 已经过期
|
||||
if now-expired <= 1000*60*60*24*2 { // 2 天内提醒 https://github.com/siyuan-note/siyuan/issues/7816
|
||||
|
|
@ -240,7 +240,7 @@ func refreshSubscriptionExpirationRemind() {
|
|||
}
|
||||
remains := int((expired - now) / 1000 / 60 / 60 / 24)
|
||||
expireDay := 15 // 付费订阅提前 15 天提醒
|
||||
if 2 == Conf.User.UserSiYuanSubscriptionPlan {
|
||||
if 2 == Conf.GetUser().UserSiYuanSubscriptionPlan {
|
||||
expireDay = 3 // 试用订阅提前 3 天提醒
|
||||
}
|
||||
|
||||
|
|
@ -256,10 +256,10 @@ func refreshSubscriptionExpirationRemind() {
|
|||
func refreshUser() {
|
||||
defer logging.Recover()
|
||||
|
||||
if nil != Conf.User {
|
||||
if nil != Conf.GetUser() {
|
||||
time.Sleep(2 * time.Minute)
|
||||
if nil != Conf.User {
|
||||
RefreshUser(Conf.User.UserToken)
|
||||
if nil != Conf.GetUser() {
|
||||
RefreshUser(Conf.GetUser().UserToken)
|
||||
}
|
||||
subscriptionExpirationReminded = false
|
||||
}
|
||||
|
|
@ -329,22 +329,22 @@ func RefreshUser(token string) {
|
|||
threeDaysAfter := util.CurrentTimeMillis() + 1000*60*60*24*3
|
||||
if "" == token {
|
||||
if "" != Conf.UserData {
|
||||
Conf.User = loadUserFromConf()
|
||||
Conf.SetUser(loadUserFromConf())
|
||||
}
|
||||
if nil == Conf.User {
|
||||
if nil == Conf.GetUser() {
|
||||
return
|
||||
}
|
||||
|
||||
var tokenExpireTime int64
|
||||
tokenExpireTime, err := strconv.ParseInt(Conf.User.UserTokenExpireTime+"000", 10, 64)
|
||||
tokenExpireTime, err := strconv.ParseInt(Conf.GetUser().UserTokenExpireTime+"000", 10, 64)
|
||||
if nil != err {
|
||||
logging.LogErrorf("convert token expire time [%s] failed: %s", Conf.User.UserTokenExpireTime, err)
|
||||
logging.LogErrorf("convert token expire time [%s] failed: %s", Conf.GetUser().UserTokenExpireTime, err)
|
||||
util.PushErrMsg(Conf.Language(19), 5000)
|
||||
return
|
||||
}
|
||||
|
||||
if threeDaysAfter > tokenExpireTime {
|
||||
token = Conf.User.UserToken
|
||||
token = Conf.GetUser().UserToken
|
||||
goto Net
|
||||
}
|
||||
return
|
||||
|
|
@ -354,15 +354,15 @@ Net:
|
|||
start := time.Now()
|
||||
user, err := getUser(token)
|
||||
if err != nil {
|
||||
if nil == Conf.User || errInvalidUser == err {
|
||||
if nil == Conf.GetUser() || errInvalidUser == err {
|
||||
util.PushErrMsg(Conf.Language(19), 5000)
|
||||
return
|
||||
}
|
||||
|
||||
var tokenExpireTime int64
|
||||
tokenExpireTime, err = strconv.ParseInt(Conf.User.UserTokenExpireTime+"000", 10, 64)
|
||||
tokenExpireTime, err = strconv.ParseInt(Conf.GetUser().UserTokenExpireTime+"000", 10, 64)
|
||||
if nil != err {
|
||||
logging.LogErrorf("convert token expire time [%s] failed: %s", Conf.User.UserTokenExpireTime, err)
|
||||
logging.LogErrorf("convert token expire time [%s] failed: %s", Conf.GetUser().UserTokenExpireTime, err)
|
||||
util.PushErrMsg(Conf.Language(19), 5000)
|
||||
return
|
||||
}
|
||||
|
|
@ -374,7 +374,7 @@ Net:
|
|||
return
|
||||
}
|
||||
|
||||
Conf.User = user
|
||||
Conf.SetUser(user)
|
||||
data, _ := gulu.JSON.MarshalJSON(user)
|
||||
Conf.UserData = util.AESEncrypt(string(data))
|
||||
Conf.Save()
|
||||
|
|
@ -407,7 +407,7 @@ func RemoveCloudShorthands(ids []string) (err error) {
|
|||
}
|
||||
resp, err := request.
|
||||
SetSuccessResult(&result).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
SetBody(body).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/inbox/removeCloudShorthands")
|
||||
if nil != err {
|
||||
|
|
@ -435,7 +435,7 @@ func GetCloudShorthand(id string) (ret map[string]interface{}, err error) {
|
|||
request := httpclient.NewCloudRequest30s()
|
||||
resp, err := request.
|
||||
SetSuccessResult(&result).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/inbox/getCloudShorthand?id=" + id)
|
||||
if nil != err {
|
||||
logging.LogErrorf("get cloud shorthand failed: %s", err)
|
||||
|
|
@ -475,7 +475,7 @@ func GetCloudShorthands(page int) (result map[string]interface{}, err error) {
|
|||
request := httpclient.NewCloudRequest30s()
|
||||
resp, err := request.
|
||||
SetSuccessResult(&result).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/inbox/getCloudShorthands?p=" + strconv.Itoa(page))
|
||||
if nil != err {
|
||||
logging.LogErrorf("get cloud shorthands failed: %s", err)
|
||||
|
|
@ -565,7 +565,7 @@ func UseActivationcode(code string) (err error) {
|
|||
_, err = request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetBody(map[string]string{"data": code}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/useActivationcode")
|
||||
if nil != err {
|
||||
logging.LogErrorf("check activation code failed: %s", err)
|
||||
|
|
@ -586,7 +586,7 @@ func CheckActivationcode(code string) (retCode int, msg string) {
|
|||
_, err := request.
|
||||
SetSuccessResult(requestResult).
|
||||
SetBody(map[string]string{"data": code}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.User.UserToken}).
|
||||
SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
|
||||
Post(util.GetCloudServer() + "/apis/siyuan/checkActivationcode")
|
||||
if nil != err {
|
||||
logging.LogErrorf("check activation code failed: %s", err)
|
||||
|
|
@ -650,6 +650,6 @@ func Login2fa(token, code string) (map[string]interface{}, error) {
|
|||
|
||||
func LogoutUser() {
|
||||
Conf.UserData = ""
|
||||
Conf.User = nil
|
||||
Conf.SetUser(nil)
|
||||
Conf.Save()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue