From 81b61600a80ada47139a13d036238321f4c8d09e Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 15 Jun 2023 22:54:12 +0800 Subject: [PATCH 1/3] :art: Display data sync progress in the status bar https://github.com/siyuan-note/siyuan/issues/8552 --- app/appearance/langs/en_US.json | 8 +++---- app/appearance/langs/es_ES.json | 8 +++---- app/appearance/langs/fr_FR.json | 8 +++---- app/appearance/langs/zh_CHT.json | 8 +++---- app/appearance/langs/zh_CN.json | 8 +++---- kernel/model/repository.go | 36 ++++++++++++++++---------------- 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 01737a3f4..ee4201e28 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1129,12 +1129,12 @@ "162": "Checking out data repo, inserting file %v", "163": "Checking out data repo, deleting file %v", "164": "Downloading data repo snapshot %s", - "165": "Downloading data repo file %v", - "166": "Downloading data repo chunk %v", + "165": "Downloading data repo file %v/%v", + "166": "Downloading data repo chunk %v/%v", "167": "Downloading data repo reference %s", "168": "Uploading data repo snapshot %s", - "169": "Uploading data repo file %v", - "170": "Uploading data repo chunk %v", + "169": "Uploading data repo file %v/%v", + "170": "Uploading data repo chunk %v/%v", "171": "Uploading data repo reference %s", "172": " If you forget the authorization code, you can search
for accessAuthCode in the workspace conf/conf.json", "173": "Please enter the access auth code", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 44a81662e..bbe1e504a 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1129,12 +1129,12 @@ "162": "Revisando el repositorio de datos, insertando el archivo %v", "163": "Revisando el repositorio de datos, eliminando el archivo %v", "164": "Descargando instantánea de repositorio de datos %s", - "165": "Descargando archivo de repositorio de datos %v", - "166": "Descargando parte de repositorio de datos %v", + "165": "Descargando archivo de repositorio de datos %v/%v", + "166": "Descargando parte de repositorio de datos %v/%v", "167": "Descargando referencia de repositorio de datos %s", "168": "Cargando instantánea de repositorio de datos %s", - "169": "Cargando archivo de repositorio de datos %v", - "170": "Cargando fragmento de repositorio de datos %v", + "169": "Cargando archivo de repositorio de datos %v/%v", + "170": "Cargando fragmento de repositorio de datos %v/%v", "171": "Cargando referencia de repositorio de datos %s", "172": "Si olvida el código de autorización, puede buscar accessAuthCode en el archivo
conf/conf.json del espacio de trabajo", "173": "Por favor ingrese el codigo de autorizacion de acceso", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index ceeb952ef..cf40a7d6b 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1129,12 +1129,12 @@ "162": "Vérification du référentiel de données, insertion du fichier %v", "163": "Vérification du référentiel de données, suppression du fichier %v", "164": "Téléchargement du l'instantané du référentiel de données %s", - "165": "Téléchargement du fichier de référentiel de données %v", - "166": "Téléchargement du bloc de dépôt de données %v", + "165": "Téléchargement du fichier de référentiel de données %v/%v", + "166": "Téléchargement du bloc de dépôt de données %v/%v", "167": "Téléchargement de la référence de référentiel de données %s", "168": "Téléchargement de l'instantané du référentiel de données %s", - "169": "Téléchargement du fichier de référentiel de données %v", - "170": "Téléchargement du bloc de dépôt de données %v", + "169": "Téléchargement du fichier de référentiel de données %v/%v", + "170": "Téléchargement du bloc de dépôt de données %v/%v", "171": "Téléchargement de la référence de référentiel de données %s", "172": "Si vous oubliez le code d'autorisation, vous pouvez rechercher accessAuthCode dans le fichier
conf/conf.json de l'espace de travail", "173": "Veuillez entrer le code d'autorisation d'accès", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index f61244406..d580fc8c8 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1129,12 +1129,12 @@ "162": "正在遷出數據倉庫,插入文件 %v", "163": "正在遷出數據倉庫,刪除文件 %v", "164": "正在下載數據倉庫快照 %s", - "165": "正在下載數據倉庫文件 %v", - "166": "正在下載數據倉庫分塊 %v", + "165": "正在下載數據倉庫文件 %v/%v", + "166": "正在下載數據倉庫分塊 %v/%v", "167": "正在下載數據倉庫引用 %s", "168": "正在上傳數據倉庫快照 %s", - "169": "正在上傳數據倉庫文件 %v", - "170": "正在上傳數據倉庫分塊 %v", + "169": "正在上傳數據倉庫文件 %v/%v", + "170": "正在上傳數據倉庫分塊 %v/%v", "171": "正在上傳數據倉庫引用 %s", "172": "如果你忘記了授權碼,可在工作空間
conf/conf.json 中搜索 accessAuthCode", "173": "請輸入訪問授權碼", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 6ec3f8e18..496e929ef 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1131,12 +1131,12 @@ "162": "正在迁出数据仓库,插入文件 %v", "163": "正在迁出数据仓库,删除文件 %v", "164": "正在下载数据仓库快照 %s", - "165": "正在下载数据仓库文件 %v", - "166": "正在下载数据仓库分块 %v", + "165": "正在下载数据仓库文件 %v/%v", + "166": "正在下载数据仓库分块 %v/%v", "167": "正在下载数据仓库引用 %s", "168": "正在上传数据仓库快照 %s", - "169": "正在上传数据仓库文件 %v", - "170": "正在上传数据仓库分块 %v", + "169": "正在上传数据仓库文件 %v/%v", + "170": "正在上传数据仓库分块%v/%v", "171": "正在上传数据仓库引用 %s", "172": "如果你忘记了授权码,可在工作空间
conf/conf.json 中搜索 accessAuthCode", "173": "请输入访问授权码", diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 703c34d38..424be0a9a 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -1573,30 +1573,30 @@ func subscribeRepoEvents() { util.ContextPushMsg(context, msg) }) - eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadFiles, func(context map[string]interface{}, ids []string) { - msg := fmt.Sprintf(Conf.Language(165), len(ids)) + eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadFiles, func(context map[string]interface{}, total int) { + msg := fmt.Sprintf(Conf.Language(165), 0, total) util.SetBootDetails(msg) - bootProgressPart = 10 / float64(len(ids)) + bootProgressPart = 10 / float64(total) util.ContextPushMsg(context, msg) }) downloadFileCount := 0 - eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadFile, func(context map[string]interface{}, id string) { - msg := fmt.Sprintf(Conf.Language(165), id[:7]) + eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadFile, func(context map[string]interface{}, count, total int) { + msg := fmt.Sprintf(Conf.Language(165), count, total) util.IncBootProgress(bootProgressPart, msg) if 0 == downloadFileCount%8 { util.ContextPushMsg(context, msg) } downloadFileCount++ }) - eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadChunks, func(context map[string]interface{}, ids []string) { - msg := fmt.Sprintf(Conf.Language(166), len(ids)) + eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadChunks, func(context map[string]interface{}, total int) { + msg := fmt.Sprintf(Conf.Language(166), 0, total) util.SetBootDetails(msg) - bootProgressPart = 10 / float64(len(ids)) + bootProgressPart = 10 / float64(total) util.ContextPushMsg(context, msg) }) downloadChunkCount := 0 - eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadChunk, func(context map[string]interface{}, id string) { - msg := fmt.Sprintf(Conf.Language(166), id[:7]) + eventbus.Subscribe(eventbus.EvtCloudBeforeDownloadChunk, func(context map[string]interface{}, count, total int) { + msg := fmt.Sprintf(Conf.Language(166), count, total) util.IncBootProgress(bootProgressPart, msg) if 0 == downloadChunkCount%8 { util.ContextPushMsg(context, msg) @@ -1613,28 +1613,28 @@ func subscribeRepoEvents() { util.IncBootProgress(1, msg) util.ContextPushMsg(context, msg) }) - eventbus.Subscribe(eventbus.EvtCloudBeforeUploadFiles, func(context map[string]interface{}, files []*entity.File) { - msg := fmt.Sprintf(Conf.Language(169), len(files)) + eventbus.Subscribe(eventbus.EvtCloudBeforeUploadFiles, func(context map[string]interface{}, total int) { + msg := fmt.Sprintf(Conf.Language(169), 0, total) util.SetBootDetails(msg) util.ContextPushMsg(context, msg) }) uploadFileCount := 0 - eventbus.Subscribe(eventbus.EvtCloudBeforeUploadFile, func(context map[string]interface{}, id string) { - msg := fmt.Sprintf(Conf.Language(169), id[:7]) + eventbus.Subscribe(eventbus.EvtCloudBeforeUploadFile, func(context map[string]interface{}, count, total int) { + msg := fmt.Sprintf(Conf.Language(169), count, total) if 0 == uploadFileCount%8 { util.SetBootDetails(msg) util.ContextPushMsg(context, msg) } uploadFileCount++ }) - eventbus.Subscribe(eventbus.EvtCloudBeforeUploadChunks, func(context map[string]interface{}, ids []string) { - msg := fmt.Sprintf(Conf.Language(170), len(ids)) + eventbus.Subscribe(eventbus.EvtCloudBeforeUploadChunks, func(context map[string]interface{}, total int) { + msg := fmt.Sprintf(Conf.Language(170), 0, total) util.SetBootDetails(msg) util.ContextPushMsg(context, msg) }) uploadChunkCount := 0 - eventbus.Subscribe(eventbus.EvtCloudBeforeUploadChunk, func(context map[string]interface{}, id string) { - msg := fmt.Sprintf(Conf.Language(170), id[:7]) + eventbus.Subscribe(eventbus.EvtCloudBeforeUploadChunk, func(context map[string]interface{}, count, total int) { + msg := fmt.Sprintf(Conf.Language(170), count, total) if 0 == uploadChunkCount%8 { util.SetBootDetails(msg) util.ContextPushMsg(context, msg) From 97e407246867ac52406317ce0a8f21e03b2e6b68 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 15 Jun 2023 23:08:52 +0800 Subject: [PATCH 2/3] :art: Display data sync progress in the status bar https://github.com/siyuan-note/siyuan/issues/8552 --- app/appearance/langs/en_US.json | 4 +-- app/appearance/langs/es_ES.json | 4 +-- app/appearance/langs/fr_FR.json | 4 +-- app/appearance/langs/zh_CHT.json | 4 +-- app/appearance/langs/zh_CN.json | 4 +-- kernel/go.mod | 23 +++++++++-------- kernel/go.sum | 42 ++++++++++++++++++-------------- kernel/model/repository.go | 20 +++++++-------- 8 files changed, 57 insertions(+), 48 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index ee4201e28..6b95509d4 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1126,8 +1126,8 @@ "159": "Indexing data repo, getting the latest file %v", "160": "Indexing data repo, inserting file %v", "161": "Checking out of data repo, walking data %s", - "162": "Checking out data repo, inserting file %v", - "163": "Checking out data repo, deleting file %v", + "162": "Checking out data repo, inserting file %v/%v", + "163": "Checking out data repo, deleting file %v/%v", "164": "Downloading data repo snapshot %s", "165": "Downloading data repo file %v/%v", "166": "Downloading data repo chunk %v/%v", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index bbe1e504a..257cade1d 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1126,8 +1126,8 @@ "159": "Indexando repositorio de datos, obteniendo el último archivo %v", "160": "Indexando repositorio de datos, insertando archivo %v", "161": "Revisando el repositorio de datos, recorriendo datos %s", - "162": "Revisando el repositorio de datos, insertando el archivo %v", - "163": "Revisando el repositorio de datos, eliminando el archivo %v", + "162": "Revisando el repositorio de datos, insertando el archivo %v/%v", + "163": "Revisando el repositorio de datos, eliminando el archivo %v/%v", "164": "Descargando instantánea de repositorio de datos %s", "165": "Descargando archivo de repositorio de datos %v/%v", "166": "Descargando parte de repositorio de datos %v/%v", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index cf40a7d6b..6cac586fb 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1126,8 +1126,8 @@ "159": "Indexation du référentiel de données, obtention du dernier fichier %v", "160": "Indexation du référentiel de données, insertion du fichier %v", "161": "Vérification du référentiel de données, données piétonnes %s", - "162": "Vérification du référentiel de données, insertion du fichier %v", - "163": "Vérification du référentiel de données, suppression du fichier %v", + "162": "Vérification du référentiel de données, insertion du fichier %v/%v", + "163": "Vérification du référentiel de données, suppression du fichier %v/%v", "164": "Téléchargement du l'instantané du référentiel de données %s", "165": "Téléchargement du fichier de référentiel de données %v/%v", "166": "Téléchargement du bloc de dépôt de données %v/%v", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index d580fc8c8..e2b9cb63c 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1126,8 +1126,8 @@ "159": "正在索引數據倉庫,獲取最新文件 %v", "160": "正在索引數據倉庫,插入文件 %v", "161": "正在遷出數據倉庫,遍歷數據 %s", - "162": "正在遷出數據倉庫,插入文件 %v", - "163": "正在遷出數據倉庫,刪除文件 %v", + "162": "正在遷出數據倉庫,插入文件 %v/%v", + "163": "正在遷出數據倉庫,刪除文件 %v/%v", "164": "正在下載數據倉庫快照 %s", "165": "正在下載數據倉庫文件 %v/%v", "166": "正在下載數據倉庫分塊 %v/%v", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 496e929ef..807ab1938 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1128,8 +1128,8 @@ "159": "正在索引数据仓库,获取最新文件 %v", "160": "正在索引数据仓库,插入文件 %v", "161": "正在迁出数据仓库,遍历数据 %s", - "162": "正在迁出数据仓库,插入文件 %v", - "163": "正在迁出数据仓库,删除文件 %v", + "162": "正在迁出数据仓库,插入文件 %v/%v", + "163": "正在迁出数据仓库,删除文件 %v/%v", "164": "正在下载数据仓库快照 %s", "165": "正在下载数据仓库文件 %v/%v", "166": "正在下载数据仓库分块 %v/%v", diff --git a/kernel/go.mod b/kernel/go.mod index b2721d4f4..5e46f2b16 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -32,7 +32,7 @@ require ( github.com/goccy/go-json v0.10.2 github.com/gofrs/flock v0.8.1 github.com/gorilla/websocket v1.5.0 - github.com/imroc/req/v3 v3.35.2 + github.com/imroc/req/v3 v3.36.1 github.com/jinzhu/copier v0.3.5 github.com/json-iterator/go v1.1.12 github.com/mattn/go-sqlite3 v2.0.3+incompatible @@ -45,10 +45,10 @@ require ( github.com/radovskyb/watcher v1.0.7 github.com/sashabaranov/go-openai v1.9.5 github.com/shirou/gopsutil/v3 v3.23.5 - github.com/siyuan-note/dejavu v0.0.0-20230612120039-bba808ca7649 + github.com/siyuan-note/dejavu v0.0.0-20230615140721-625077db508e github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b - github.com/siyuan-note/filelock v0.0.0-20230615011542-df9ae6b3f981 + github.com/siyuan-note/filelock v0.0.0-20230615140405-d05a21d49524 github.com/siyuan-note/httpclient v0.0.0-20230610031552-11458e2e39b0 github.com/siyuan-note/logging v0.0.0-20230327073243-ebe83aec1493 github.com/siyuan-note/riff v0.0.0-20230516073320-b440b8feaabd @@ -58,7 +58,7 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 golang.org/x/image v0.7.0 golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda - golang.org/x/mod v0.10.0 + golang.org/x/mod v0.11.0 golang.org/x/text v0.10.0 ) @@ -67,14 +67,16 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/alecthomas/chroma v0.10.0 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect github.com/andybalholm/cascadia v1.3.2 // indirect github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef // indirect - github.com/aws/aws-sdk-go v1.44.280 // indirect + github.com/aws/aws-sdk-go v1.44.282 // indirect github.com/bytedance/sonic v1.9.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/dlclark/regexp2 v1.10.0 // indirect github.com/dsnet/compress v0.0.1 // indirect + github.com/gaukas/godicttls v0.0.3 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect @@ -98,7 +100,7 @@ require ( github.com/imdario/mergo v0.3.16 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/juju/errors v1.0.0 // indirect - github.com/klauspost/compress v1.16.5 // indirect + github.com/klauspost/compress v1.16.6 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/leodido/go-urn v1.2.4 // indirect github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a // indirect @@ -116,6 +118,7 @@ require ( github.com/quic-go/qtls-go1-19 v0.3.2 // indirect github.com/quic-go/qtls-go1-20 v0.2.2 // indirect github.com/quic-go/quic-go v0.35.1 // indirect + github.com/refraction-networking/utls v1.3.2 // indirect github.com/restic/chunker v0.4.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect @@ -128,10 +131,10 @@ require ( github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect golang.org/x/arch v0.3.0 // indirect - golang.org/x/crypto v0.9.0 // indirect + golang.org/x/crypto v0.10.0 // indirect golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sync v0.2.0 // indirect + golang.org/x/net v0.11.0 // indirect + golang.org/x/sync v0.3.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/tools v0.9.3 // indirect google.golang.org/protobuf v1.30.0 // indirect @@ -141,7 +144,7 @@ require ( replace github.com/mattn/go-sqlite3 => github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5 -//replace github.com/siyuan-note/dejavu => D:\88250\dejavu +replace github.com/siyuan-note/dejavu => D:\88250\dejavu //replace github.com/siyuan-note/riff => D:\88250\riff //replace github.com/siyuan-note/httpclient => D:\88250\httpclient //replace github.com/siyuan-note/filelock => D:\88250\filelock diff --git a/kernel/go.sum b/kernel/go.sum index 28db959dc..4275d121a 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -31,6 +31,8 @@ github.com/Xuanwo/go-locale v1.1.0 h1:51gUxhxl66oXAjI9uPGb2O0qwPECpriKQb2hl35mQk github.com/Xuanwo/go-locale v1.1.0/go.mod h1:UKrHoZB3FPIk9wIG2/tVSobnHgNnceGSH3Y8DY5cASs= github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= @@ -38,8 +40,8 @@ github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhP github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef h1:2JGTg6JapxP9/R33ZaagQtAM4EkkSYnIAlOG5EI8gkM= github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef/go.mod h1:JS7hed4L1fj0hXcyEejnW57/7LCetXggd+vwrRnYeII= -github.com/aws/aws-sdk-go v1.44.280 h1:UYl/yxhDxP8naok6ftWyQ9/9ZzNwjC9dvEs/j8BkGhw= -github.com/aws/aws-sdk-go v1.44.280/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.282 h1:ZPB9QhwxmMIEC8ja0DdFowOl5fODWaZ6s2cZ40fx6r8= +github.com/aws/aws-sdk-go v1.44.282/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= @@ -81,6 +83,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gaukas/godicttls v0.0.3 h1:YNDIf0d9adcxOijiLrEzpfZGAkNwLRzPaG6OjU7EITk= +github.com/gaukas/godicttls v0.0.3/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI= github.com/getsentry/sentry-go v0.21.0 h1:c9l5F1nPF30JIppulk4veau90PK6Smu3abgVtVQWon4= github.com/getsentry/sentry-go v0.21.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= @@ -164,8 +168,8 @@ github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/imroc/req/v3 v3.35.2 h1:psklb5GyhKugTsGQy6seydK/8vMKBJj4R0Bwc/OQahw= -github.com/imroc/req/v3 v3.35.2/go.mod h1:c8dXW9N3SJn/DuKVjHHmryV2WO7At9bFtnu1rloiFoo= +github.com/imroc/req/v3 v3.36.1 h1:wdFunfb7ZoYtPedtiVNF69qcZx96SLSnPvspaf/W/lE= +github.com/imroc/req/v3 v3.36.1/go.mod h1:od0ChNn+B5j6bMogGvaupXDi40huKzOX+/CrtZb2dt8= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -182,8 +186,8 @@ github.com/juju/errors v1.0.0/go.mod h1:B5x9thDqx0wIMH3+aLIMP9HjItInYWObRovoCFM5 github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= github.com/juju/testing v0.0.0-20191001232224-ce9dec17d28b/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= -github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= @@ -259,6 +263,8 @@ github.com/quic-go/quic-go v0.35.1 h1:b0kzj6b/cQAf05cT0CkQubHM31wiA+xH3IBkxP62po github.com/quic-go/quic-go v0.35.1/go.mod h1:+4CVgVppm0FNjpG3UcX8Joi/frKOH7/ciD5yGcwOO1g= github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= +github.com/refraction-networking/utls v1.3.2 h1:o+AkWB57mkcoW36ET7uJ002CpBWHu0KPxi6vzxvPnv8= +github.com/refraction-networking/utls v1.3.2/go.mod h1:fmoaOww2bxzzEpIKOebIsnBvjQpqP7L2vcm/9KUfm/E= github.com/restic/chunker v0.4.0 h1:YUPYCUn70MYP7VO4yllypp2SjmsRhRJaad3xKu1QFRw= github.com/restic/chunker v0.4.0/go.mod h1:z0cH2BejpW636LXw0R/BGyv+Ey8+m9QGiOanDHItzyw= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -281,14 +287,14 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d h1:lvCTyBbr36+tqMccdGMwuEU+hjux/zL6xSmf5S9ITaA= github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/siyuan-note/dejavu v0.0.0-20230612120039-bba808ca7649 h1:MpzA21Jp0ofPJJxP8DwQGVXU2BGGV/blBFk130Du1Mw= -github.com/siyuan-note/dejavu v0.0.0-20230612120039-bba808ca7649/go.mod h1:hqZGaLRW8MNQiypk+RsRWMjjCHx4i+RSoZiK62q9m0Q= +github.com/siyuan-note/dejavu v0.0.0-20230615140721-625077db508e h1:OI67bLL3RnpFXW4TVLCnG+ixJ33m2zL8qE01lIt6xDM= +github.com/siyuan-note/dejavu v0.0.0-20230615140721-625077db508e/go.mod h1:uGxJ89ZSGGOvHbEFdFkyWHquEZshusyzVcOLEvsi93g= github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 h1:Bi7/7f29LW+Fm0cHc0J1NO1cZqyJwljSWVmfOqVZgaE= github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw= github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b h1:828lTUW2C0uNiolODqoACu7J8sDUzswD4Xo04mUombg= github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b/go.mod h1:Sqo4FYX5lAXu7gWkbEdJF0e6P57tNNVV4WDKYDctokI= -github.com/siyuan-note/filelock v0.0.0-20230615011542-df9ae6b3f981 h1:ulmzDD3Z3tsJAIec9sLLGuK88tuuE2o9Ux8Vog8KQBc= -github.com/siyuan-note/filelock v0.0.0-20230615011542-df9ae6b3f981/go.mod h1:jK5lCYfPbFOrW23/HMeU7kmpLdEd5GkennF+kUpy7Vs= +github.com/siyuan-note/filelock v0.0.0-20230615140405-d05a21d49524 h1:ZuxN5gwqtUOd1NkOkNhM4OlVWfjujY98zsR+zFi4x9g= +github.com/siyuan-note/filelock v0.0.0-20230615140405-d05a21d49524/go.mod h1:jK5lCYfPbFOrW23/HMeU7kmpLdEd5GkennF+kUpy7Vs= github.com/siyuan-note/httpclient v0.0.0-20230610031552-11458e2e39b0 h1:RKdpy6P1LjUBgQ/7hKO+UmcSwfWzcpMAKRh/deNiVXQ= github.com/siyuan-note/httpclient v0.0.0-20230610031552-11458e2e39b0/go.mod h1:wqRaWZoA/NZJzZ6aCszp75Bi6dH7ZVcb8JWRysvrC2Y= github.com/siyuan-note/logging v0.0.0-20230327073243-ebe83aec1493 h1:oaN5b0WDFkjdBgGxmmBnMrtZxaJ76LZLwhQSZnznJMI= @@ -352,8 +358,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= @@ -364,8 +370,8 @@ golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda/go.mod h1:aAjjkJNdrh3PMck golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -379,14 +385,14 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 424be0a9a..871a87d36 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -1536,30 +1536,30 @@ func subscribeRepoEvents() { coWalkDataCount++ }) var bootProgressPart float64 - eventbus.Subscribe(eventbus.EvtCheckoutUpsertFiles, func(context map[string]interface{}, files []*entity.File) { - msg := fmt.Sprintf(Conf.Language(162), len(files)) + eventbus.Subscribe(eventbus.EvtCheckoutUpsertFiles, func(context map[string]interface{}, total int) { + msg := fmt.Sprintf(Conf.Language(162), 0, total) util.SetBootDetails(msg) - bootProgressPart = 10 / float64(len(files)) + bootProgressPart = 10 / float64(total) util.ContextPushMsg(context, msg) }) coUpsertFileCount := 0 - eventbus.Subscribe(eventbus.EvtCheckoutUpsertFile, func(context map[string]interface{}, path string) { - msg := fmt.Sprintf(Conf.Language(162), filepath.Base(path)) + eventbus.Subscribe(eventbus.EvtCheckoutUpsertFile, func(context map[string]interface{}, count, total int) { + msg := fmt.Sprintf(Conf.Language(162), count, total) util.IncBootProgress(bootProgressPart, msg) if 0 == coUpsertFileCount%64 { util.ContextPushMsg(context, msg) } coUpsertFileCount++ }) - eventbus.Subscribe(eventbus.EvtCheckoutRemoveFiles, func(context map[string]interface{}, files []*entity.File) { - msg := fmt.Sprintf(Conf.Language(163), files) + eventbus.Subscribe(eventbus.EvtCheckoutRemoveFiles, func(context map[string]interface{}, total int) { + msg := fmt.Sprintf(Conf.Language(163), 0, total) util.SetBootDetails(msg) - bootProgressPart = 10 / float64(len(files)) + bootProgressPart = 10 / float64(total) util.ContextPushMsg(context, msg) }) coRemoveFileCount := 0 - eventbus.Subscribe(eventbus.EvtCheckoutRemoveFile, func(context map[string]interface{}, path string) { - msg := fmt.Sprintf(Conf.Language(163), filepath.Base(path)) + eventbus.Subscribe(eventbus.EvtCheckoutRemoveFile, func(context map[string]interface{}, count, total int) { + msg := fmt.Sprintf(Conf.Language(163), count, total) util.IncBootProgress(bootProgressPart, msg) if 0 == coRemoveFileCount%1024 { util.ContextPushMsg(context, msg) From 9e0c59ca004d94b522a779486421fcb19c1d6c2f Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 15 Jun 2023 23:21:00 +0800 Subject: [PATCH 3/3] :art: Display data sync progress in the status bar https://github.com/siyuan-note/siyuan/issues/8552 --- kernel/go.mod | 4 ++-- kernel/go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/go.mod b/kernel/go.mod index 5e46f2b16..d78c08751 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -45,7 +45,7 @@ require ( github.com/radovskyb/watcher v1.0.7 github.com/sashabaranov/go-openai v1.9.5 github.com/shirou/gopsutil/v3 v3.23.5 - github.com/siyuan-note/dejavu v0.0.0-20230615140721-625077db508e + github.com/siyuan-note/dejavu v0.0.0-20230615150753-23c4115fa817 github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b github.com/siyuan-note/filelock v0.0.0-20230615140405-d05a21d49524 @@ -144,7 +144,7 @@ require ( replace github.com/mattn/go-sqlite3 => github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5 -replace github.com/siyuan-note/dejavu => D:\88250\dejavu +//replace github.com/siyuan-note/dejavu => D:\88250\dejavu //replace github.com/siyuan-note/riff => D:\88250\riff //replace github.com/siyuan-note/httpclient => D:\88250\httpclient //replace github.com/siyuan-note/filelock => D:\88250\filelock diff --git a/kernel/go.sum b/kernel/go.sum index 4275d121a..2a7687860 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -287,8 +287,8 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d h1:lvCTyBbr36+tqMccdGMwuEU+hjux/zL6xSmf5S9ITaA= github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/siyuan-note/dejavu v0.0.0-20230615140721-625077db508e h1:OI67bLL3RnpFXW4TVLCnG+ixJ33m2zL8qE01lIt6xDM= -github.com/siyuan-note/dejavu v0.0.0-20230615140721-625077db508e/go.mod h1:uGxJ89ZSGGOvHbEFdFkyWHquEZshusyzVcOLEvsi93g= +github.com/siyuan-note/dejavu v0.0.0-20230615150753-23c4115fa817 h1:P3Qj0qkj07fZWyVjUnTMQa40mkaTNULvzlMcE26yTew= +github.com/siyuan-note/dejavu v0.0.0-20230615150753-23c4115fa817/go.mod h1:uGxJ89ZSGGOvHbEFdFkyWHquEZshusyzVcOLEvsi93g= github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 h1:Bi7/7f29LW+Fm0cHc0J1NO1cZqyJwljSWVmfOqVZgaE= github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw= github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b h1:828lTUW2C0uNiolODqoACu7J8sDUzswD4Xo04mUombg=