From 613ff2907684838d647a13d6f4e1fab3e5602928 Mon Sep 17 00:00:00 2001 From: "xiaoqi.cxq" Date: Sat, 25 Jun 2022 07:47:44 +0800 Subject: [PATCH] save workspaces and badgeCreations --- src/services/gitWorkspaceSvc.js | 13 +++---- .../providers/giteeAppDataProvider.js | 35 +++++++++---------- src/services/providers/giteeProvider.js | 2 +- .../providers/giteeWorkspaceProvider.js | 2 +- src/services/providers/helpers/giteeHelper.js | 15 ++++---- src/services/syncSvc.js | 12 +++---- static/landing/index.html | 26 +++++++------- 7 files changed, 54 insertions(+), 51 deletions(-) diff --git a/src/services/gitWorkspaceSvc.js b/src/services/gitWorkspaceSvc.js index 98024e5c..67a8b594 100644 --- a/src/services/gitWorkspaceSvc.js +++ b/src/services/gitWorkspaceSvc.js @@ -152,17 +152,18 @@ export default { }); // Data creations/updates - const syncDataByItemId = store.getters['data/syncDataByItemId']; + const syncDataById = store.getters['data/syncDataById']; Object.keys(treeDataMap).forEach((path) => { - // Only template data are stored - const [, id] = path.match(/^\.stackedit-data\/(templates)\.json$/) || []; + // Only settings、workspaces、template data are stored + const [, id] = path.match(/^\.stackedit-data\/(settings|workspaces|badgeCreations|templates)\.json$/) || []; if (id) { idsByPath[path] = id; - const syncData = syncDataByItemId[id]; + idsByPath[id] = id; + const syncData = syncDataById[id]; if (!syncData || syncData.sha !== this.shaByPath[path]) { const type = 'data'; changes.push({ - syncDataId: path, + syncDataId: id, item: { id, type, @@ -170,7 +171,7 @@ export default { hash: 1, }, syncData: { - id: path, + id, type, // Need a truthy value to force downloading the content hash: 1, diff --git a/src/services/providers/giteeAppDataProvider.js b/src/services/providers/giteeAppDataProvider.js index 87a978bc..e37e1883 100644 --- a/src/services/providers/giteeAppDataProvider.js +++ b/src/services/providers/giteeAppDataProvider.js @@ -113,15 +113,20 @@ export default new Provider({ if (!syncData) { return {}; } - + const path = `.stackedit-data/${syncData.id}.json`; + // const path = store.getters.gitPathsByItemId[syncData.id]; + // const path = syncData.id; const { sha, data } = await giteeHelper.downloadFile({ owner: token.name, repo: appDataRepo, branch: appDataBranch, token, - path: syncData.id, + path, }); - gitWorkspaceSvc.shaByPath[syncData.id] = sha; + if (!sha) { + return {}; + } + gitWorkspaceSvc.shaByPath[path] = sha; const item = JSON.parse(data); return { item, @@ -129,6 +134,7 @@ export default new Provider({ ...syncData, hash: item.hash, sha, + type: 'data', }, }; }, @@ -162,21 +168,11 @@ export default new Provider({ async uploadWorkspaceData({ token, item, + syncData, }) { - const path = store.getters.gitPathsByItemId[item.id]; - if (!path) { - return { - syncData: { - type: item.type, - hash: item.hash, - }, - }; - } - const syncData = { - id: path, - type: item.type, - hash: item.hash, - }; + const path = `.stackedit-data/${item.id}.json`; + // const path = store.getters.gitPathsByItemId[item.id]; + // const path = syncData.id; const res = await giteeHelper.uploadFile({ token, owner: token.name, @@ -190,6 +186,9 @@ export default new Provider({ return { syncData: { ...syncData, + type: item.type, + hash: item.hash, + data: item.data, sha: res.content.sha, }, }; @@ -221,7 +220,7 @@ export default new Provider({ user = committer; } const sub = `${giteeHelper.subPrefix}:${user.login}`; - if (user.avatar_url && user.avatar_url.endsWith('.png')) { + if (user.avatar_url && user.avatar_url.endsWith('.png') && !user.avatar_url.endsWith('no_portrait.png')) { user.avatar_url = `${user.avatar_url}!avatar60`; } userSvc.addUserInfo({ id: sub, name: user.login, imageUrl: user.avatar_url }); diff --git a/src/services/providers/giteeProvider.js b/src/services/providers/giteeProvider.js index 0e719d47..207bae47 100644 --- a/src/services/providers/giteeProvider.js +++ b/src/services/providers/giteeProvider.js @@ -135,7 +135,7 @@ export default new Provider({ user = committer; } const sub = `${giteeHelper.subPrefix}:${user.login}`; - if (user.avatar_url && user.avatar_url.endsWith('.png')) { + if (user.avatar_url && user.avatar_url.endsWith('.png') && !user.avatar_url.endsWith('no_portrait.png')) { user.avatar_url = `${user.avatar_url}!avatar60`; } userSvc.addUserInfo({ id: sub, name: user.login, imageUrl: user.avatar_url }); diff --git a/src/services/providers/giteeWorkspaceProvider.js b/src/services/providers/giteeWorkspaceProvider.js index fe775991..08a88d40 100644 --- a/src/services/providers/giteeWorkspaceProvider.js +++ b/src/services/providers/giteeWorkspaceProvider.js @@ -249,7 +249,7 @@ export default new Provider({ user = committer; } const sub = `${giteeHelper.subPrefix}:${user.login}`; - if (user.avatar_url && user.avatar_url.endsWith('.png')) { + if (user.avatar_url && user.avatar_url.endsWith('.png') && !user.avatar_url.endsWith('no_portrait.png')) { user.avatar_url = `${user.avatar_url}!avatar60`; } userSvc.addUserInfo({ id: sub, name: user.login, imageUrl: user.avatar_url }); diff --git a/src/services/providers/helpers/giteeHelper.js b/src/services/providers/helpers/giteeHelper.js index c9de2986..4368f4cf 100644 --- a/src/services/providers/helpers/giteeHelper.js +++ b/src/services/providers/helpers/giteeHelper.js @@ -46,7 +46,7 @@ userSvc.setInfoResolver('gitee', subPrefix, async (sub) => { }, })).body; - if (user.avatar_url && user.avatar_url.endsWith('.png')) { + if (user.avatar_url && user.avatar_url.endsWith('.png') && !user.avatar_url.endsWith('no_portrait.png')) { user.avatar_url = `${user.avatar_url}!avatar60`; } return { @@ -112,7 +112,7 @@ export default { access_token: accessToken, }, })).body; - if (user.avatar_url && user.avatar_url.endsWith('.png')) { + if (user.avatar_url && user.avatar_url.endsWith('.png') && !user.avatar_url.endsWith('no_portrait.png')) { user.avatar_url = `${user.avatar_url}!avatar60`; } userSvc.addUserInfo({ @@ -309,10 +309,13 @@ export default { url: `contents/${encodeURIComponent(path)}`, params: { ref: branch }, }); - return { - sha, - data: utils.decodeBase64(content), - }; + if (sha) { + return { + sha, + data: utils.decodeBase64(content), + }; + } + return {}; }, /** diff --git a/src/services/syncSvc.js b/src/services/syncSvc.js index 1e1d2975..2ba2c608 100644 --- a/src/services/syncSvc.js +++ b/src/services/syncSvc.js @@ -539,7 +539,7 @@ const syncDataItem = async (dataId) => { || store.state.data.lsItemsById[dataId]; const oldItem = getItem(); - const oldSyncData = store.getters['data/syncDataByItemId'][dataId]; + const oldSyncData = store.getters['data/syncDataById'][dataId]; // Sync if item hash and syncData hash are out of sync if (oldSyncData && oldItem && oldItem.hash === oldSyncData.hash) { return; @@ -548,7 +548,7 @@ const syncDataItem = async (dataId) => { const token = workspaceProvider.getToken(); const { item } = updateSyncData(await workspaceProvider.downloadWorkspaceData({ token, - syncData: oldSyncData, + syncData: oldSyncData || { id: dataId }, })); const serverItem = item; @@ -603,14 +603,14 @@ const syncDataItem = async (dataId) => { updateSyncData(await workspaceProvider.uploadWorkspaceData({ token, item: mergedItem, - syncData: store.getters['data/syncDataByItemId'][dataId], + syncData: store.getters['data/syncDataById'][dataId], ifNotTooLate: tooLateChecker(restartContentSyncAfter), })); } // Copy sync data into data sync data store.dispatch('data/patchDataSyncDataById', { - [dataId]: utils.deepCopy(store.getters['data/syncDataByItemId'][dataId]), + [dataId]: utils.deepCopy(store.getters['data/syncDataById'][dataId]), }); }; @@ -728,11 +728,11 @@ const syncWorkspace = async (skipContents = false) => { // Sync settings, workspaces and badges only in the main workspace if (workspace.id === 'main') { - await syncDataItem('settings'); + // await syncDataItem('settings'); await syncDataItem('workspaces'); await syncDataItem('badgeCreations'); + // await syncDataItem('templates'); } - await syncDataItem('templates'); if (!skipContents) { const currentFileId = store.getters['file/current'].id; diff --git a/static/landing/index.html b/static/landing/index.html index 36d8dac3..cbd55aae 100644 --- a/static/landing/index.html +++ b/static/landing/index.html @@ -303,7 +303,7 @@

丰富的 Markdown 编辑器

-

StackEdit 的 Markdown 语法高亮是独一无二的。 编辑器的精致文本格式可帮助您可视化文件的最终呈现。

+

StackEdit中文版 的 Markdown 语法高亮是独一无二的。 编辑器的精致文本格式可帮助您可视化文件的最终呈现。

@@ -316,14 +316,14 @@

所见即所得控件

-

StackEdit 提供了非常方便的格式化按钮和快捷方式,这要归功于 Stack Overflow 使用的所见即所得式 Markdown 编辑器 PageDown。

+

StackEdit中文版 提供了非常方便的格式化按钮和快捷方式,这要归功于 Stack Overflow 使用的所见即所得式 Markdown 编辑器 PageDown。

智能布局

-

无论你是写作、阅读还是评论……StackEdit的布局都为你提供了所需的灵活性。

+

无论你是写作、阅读还是评论……StackEdit中文版的布局都为你提供了所需的灵活性。

@@ -333,7 +333,7 @@

滚动同步实时预览

-

StackEdit的滚动同步功能精确地绑定了编辑器面板和预览面板的滚动条,以确保您在编写时始终关注输出。

+

StackEdit中文版的滚动同步功能精确地绑定了编辑器面板和预览面板的滚动条,以确保您在编写时始终关注输出。

@@ -342,7 +342,7 @@

保持同步

-

StackEdit 可以将您的文件与 Google Drive、Dropbox 和 GitHub 同步。 它还可以将它们作为博客文章发布到 Blogger、WordPress 和 Zendesk。 您可以选择是以 Markdown 格式、HTML 上传,还是使用 Handlebars 模板引擎格式化输出。

+

StackEdit中文版 可以将您的文件与 Gitee、GitHub、Google Drive 和 Dropbox 同步。 它还可以将它们作为博客文章发布到 Blogger、WordPress 和 Zendesk。 您可以选择是以 Markdown 格式、HTML 上传,还是使用 Handlebars 模板引擎格式化输出。

@@ -353,14 +353,14 @@

协作

-

借助 StackEdit,您可以共享协作文档空间,这要归功于同步机制。 如果两个协作者同时处理同一个文件,StackEdit 会负责合并更改。

+

借助 StackEdit中文版,您可以共享协作文档空间,这要归功于同步机制。 如果两个协作者同时处理同一个文件,StackEdit中文版 会负责合并更改。

评论

-

StackEdit 允许您在文件中插入内联评论和嵌入协作者讨论,就像 Microsoft Word 和 Google Docs 一样。

+

StackEdit中文版 允许您在文件中插入内联评论和嵌入协作者讨论,就像 Microsoft Word 和 Google Docs 一样。

@@ -368,7 +368,7 @@

离线写作!

-

即使在旅行时,StackEdit 仍然可以访问,让您可以像任何桌面应用程序一样离线编写。 你没有借口再偷懒!

+

即使在旅行时,StackEdit中文版 仍然可以访问,让您可以像任何桌面应用程序一样离线编写。 你没有借口再偷懒!

扩展的 Markdown 支持

@@ -382,7 +382,7 @@

GitHub 风格的 Markdown

-

StackEdit 支持不同的 Markdown 风格,例如 Markdown Extra、GFM 和 CommonMark。 每个 Markdown 功能都可以在您方便的时候启用或禁用。

+

StackEdit中文版 支持不同的 Markdown 风格,例如 Markdown Extra、GFM 和 CommonMark。 每个 Markdown 功能都可以在您方便的时候启用或禁用。

@@ -396,7 +396,7 @@

LaTeX 数学表达式

-

StackEdit 从您的 Markdown 文件中的 LaTeX 表达式呈现数学公式。

+

StackEdit中文版 从您的 Markdown 文件中的 LaTeX 表达式呈现数学公式。

@@ -409,7 +409,7 @@

UML 图

-

StackEdit 使您能够使用简单的语法编写序列图和流程图。

+

StackEdit中文版 使您能够使用简单的语法编写序列图和流程图。

@@ -422,7 +422,7 @@

乐谱

-

StackEdit 可以使用 ABC 表示法渲染乐谱。

+

StackEdit中文版 可以使用 ABC 表示法渲染乐谱。

@@ -435,7 +435,7 @@

Emojis表情

-

StackEdit 支持使用 Markdown 表情符号标记在文件中插入表情符号。

+

StackEdit中文版 支持使用 Markdown 表情符号标记在文件中插入表情符号。