🐛 Pandoc is not initialized in some cases Fix https://github.com/siyuan-note/siyuan/issues/8533

This commit is contained in:
Daniel 2023-06-15 10:15:13 +08:00
parent e93c62e49f
commit a515a4f992
No known key found for this signature in database
GPG Key ID: 86211BA83DF03017
7 changed files with 33 additions and 5 deletions

View File

@ -347,7 +347,7 @@ func exportDocx(c *gin.Context) {
} }
err := model.ExportDocx(id, savePath, removeAssets, merge) err := model.ExportDocx(id, savePath, removeAssets, merge)
if nil != err { if nil != err {
ret.Code = 1 ret.Code = -1
ret.Msg = err.Error() ret.Msg = err.Error()
ret.Data = map[string]interface{}{"closeTimeout": 7000} ret.Data = map[string]interface{}{"closeTimeout": 7000}
return return

View File

@ -19,7 +19,6 @@ package model
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/sashabaranov/go-openai"
"os" "os"
"path/filepath" "path/filepath"
"runtime" "runtime"
@ -35,6 +34,8 @@ import (
"github.com/Xuanwo/go-locale" "github.com/Xuanwo/go-locale"
"github.com/dustin/go-humanize" "github.com/dustin/go-humanize"
"github.com/getsentry/sentry-go" "github.com/getsentry/sentry-go"
"github.com/sashabaranov/go-openai"
"github.com/siyuan-note/eventbus"
"github.com/siyuan-note/filelock" "github.com/siyuan-note/filelock"
"github.com/siyuan-note/logging" "github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/conf" "github.com/siyuan-note/siyuan/kernel/conf"
@ -892,3 +893,15 @@ func upgradeUserGuide() {
index(boxID) index(boxID)
} }
} }
func init() {
subscribeConfEvents()
}
func subscribeConfEvents() {
eventbus.Subscribe(util.EvtConfPandocInitialized, func() {
logging.LogInfof("pandoc initialized, set pandoc bin to [%s]", util.PandocBinPath)
Conf.Export.PandocBin = util.PandocBinPath
Conf.Save()
})
}

View File

@ -333,7 +333,11 @@ func Preview(id string) string {
func ExportDocx(id, savePath string, removeAssets, merge bool) (err error) { func ExportDocx(id, savePath string, removeAssets, merge bool) (err error) {
if !util.IsValidPandocBin(Conf.Export.PandocBin) { if !util.IsValidPandocBin(Conf.Export.PandocBin) {
return errors.New(Conf.Language(115)) Conf.Export.PandocBin = util.PandocBinPath
Conf.Save()
if !util.IsValidPandocBin(Conf.Export.PandocBin) {
return errors.New(Conf.Language(115))
}
} }
tmpDir := filepath.Join(util.TempDir, "export", gulu.Rand.String(7)) tmpDir := filepath.Join(util.TempDir, "export", gulu.Rand.String(7))

View File

@ -253,6 +253,10 @@ func updateEmbedBlockContent(embedBlockID string, queryResultBlocks []*EmbedBloc
} }
func init() { func init() {
subscribeSQLEvents()
}
func subscribeSQLEvents() {
//eventbus.Subscribe(eventbus.EvtSQLInsertBlocks, func(context map[string]interface{}, current, total, blockCount int, hash string) { //eventbus.Subscribe(eventbus.EvtSQLInsertBlocks, func(context map[string]interface{}, current, total, blockCount int, hash string) {
// if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container { // if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
// // Android/iOS 端不显示数据索引和搜索索引状态提示 https://github.com/siyuan-note/siyuan/issues/6392 // // Android/iOS 端不显示数据索引和搜索索引状态提示 https://github.com/siyuan-note/siyuan/issues/6392

View File

@ -57,7 +57,7 @@ import (
) )
func init() { func init() {
subscribeEvents() subscribeRepoEvents()
} }
type Snapshot struct { type Snapshot struct {
@ -1476,7 +1476,7 @@ func newRepository() (ret *dejavu.Repo, err error) {
return return
} }
func subscribeEvents() { func subscribeRepoEvents() {
eventbus.Subscribe(eventbus.EvtIndexBeforeWalkData, func(context map[string]interface{}, path string) { eventbus.Subscribe(eventbus.EvtIndexBeforeWalkData, func(context map[string]interface{}, path string) {
msg := fmt.Sprintf(Conf.Language(158), path) msg := fmt.Sprintf(Conf.Language(158), path)
util.SetBootDetails(msg) util.SetBootDetails(msg)

View File

@ -25,6 +25,7 @@ import (
"strings" "strings"
"github.com/88250/gulu" "github.com/88250/gulu"
"github.com/siyuan-note/eventbus"
"github.com/siyuan-note/logging" "github.com/siyuan-note/logging"
) )
@ -105,6 +106,8 @@ func initPandoc() {
} }
} }
defer eventbus.Publish(EvtConfPandocInitialized)
if gulu.OS.IsWindows() { if gulu.OS.IsWindows() {
PandocBinPath = filepath.Join(pandocDir, "bin", "pandoc.exe") PandocBinPath = filepath.Join(pandocDir, "bin", "pandoc.exe")
} else if gulu.OS.IsDarwin() || gulu.OS.IsLinux() { } else if gulu.OS.IsDarwin() || gulu.OS.IsLinux() {

View File

@ -401,3 +401,7 @@ func existAvailabilityStatus(workspaceAbsPath string) bool {
} }
return false return false
} }
const (
EvtConfPandocInitialized = "conf.pandoc.initialized"
)