🎨 Automatically create notebook conf.json if not found it https://github.com/siyuan-note/siyuan/issues/9647

This commit is contained in:
Daniel 2023-11-14 11:08:39 +08:00
parent 2299ff1ae7
commit 0658f3bc0e
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 29 additions and 16 deletions

View file

@ -111,32 +111,40 @@ func ListNotebooks() (ret []*Box, err error) {
boxConf := conf.NewBoxConf()
boxDirPath := filepath.Join(util.DataDir, dir.Name())
boxConfPath := filepath.Join(boxDirPath, ".siyuan", "conf.json")
if !filelock.IsExist(boxConfPath) {
isExistConf := filelock.IsExist(boxConfPath)
if !isExistConf {
// 数据同步时展开文档树操作可能导致数据丢失 https://github.com/siyuan-note/siyuan/issues/7129
logging.LogWarnf("found a corrupted box [%s]", boxDirPath)
continue
}
data, readErr := filelock.ReadFile(boxConfPath)
if nil != readErr {
logging.LogErrorf("read box conf [%s] failed: %s", boxConfPath, readErr)
continue
}
if readErr = gulu.JSON.UnmarshalJSON(data, boxConf); nil != readErr {
logging.LogErrorf("parse box conf [%s] failed: %s", boxConfPath, readErr)
os.RemoveAll(boxConfPath)
continue
} else {
data, readErr := filelock.ReadFile(boxConfPath)
if nil != readErr {
logging.LogErrorf("read box conf [%s] failed: %s", boxConfPath, readErr)
continue
}
if readErr = gulu.JSON.UnmarshalJSON(data, boxConf); nil != readErr {
logging.LogErrorf("parse box conf [%s] failed: %s", boxConfPath, readErr)
os.RemoveAll(boxConfPath)
continue
}
}
id := dir.Name()
ret = append(ret, &Box{
box := &Box{
ID: id,
Name: boxConf.Name,
Icon: boxConf.Icon,
Sort: boxConf.Sort,
SortMode: boxConf.SortMode,
Closed: boxConf.Closed,
})
}
if !isExistConf {
// Automatically create notebook conf.json if not found it https://github.com/siyuan-note/siyuan/issues/9647
box.SaveConf(boxConf)
box.Unindex()
logging.LogWarnf("fixed a corrupted box [%s]", boxDirPath)
}
ret = append(ret, box)
}
switch Conf.FileTree.Sort {

View file

@ -902,7 +902,12 @@ func upgradeUserGuide() {
boxConf := conf.NewBoxConf()
boxConfPath := filepath.Join(boxDirPath, ".siyuan", "conf.json")
if !filelock.IsExist(boxConfPath) {
logging.LogWarnf("found a corrupted box [%s]", boxDirPath)
logging.LogWarnf("found a corrupted user guide box [%s]", boxDirPath)
if removeErr := filelock.Remove(boxDirPath); nil != removeErr {
logging.LogErrorf("remove corrupted user guide box [%s] failed: %s", boxDirPath, removeErr)
} else {
logging.LogInfof("removed corrupted user guide box [%s]", boxDirPath)
}
continue
}