diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts
index 4b5819994..ab11a7f0e 100644
--- a/app/src/config/bazaar.ts
+++ b/app/src/config/bazaar.ts
@@ -30,6 +30,7 @@ export const bazaar = {
${window.siyuan.languages.template}
${window.siyuan.languages.icon}
${window.siyuan.languages.widget}
+ ${window.siyuan.languages.downloaded}
@@ -112,6 +113,23 @@ export const bazaar = {
${loadingHTML}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${loadingHTML}
+
+
`;
@@ -149,6 +167,33 @@ export const bazaar = {
+`;
+ },
+ _genMyHTML(item: IBazaarItem, bazaarType: TBazaarType) {
+ return `
+
+
+ ${item.name}
+
+
+
+
+ ${item.downloads}
+
+
+
+
+
+
+
+
+
`;
},
data: {
@@ -156,11 +201,13 @@ export const bazaar = {
templates: [] as IBazaarItem[],
icons: [] as IBazaarItem[],
widgets: [] as IBazaarItem[],
+ downloaded: [] as IBazaarItem[],
},
renderReadme(cardElement: HTMLElement, bazaarType: TBazaarType) {
+ const isDownloaded = cardElement.getAttribute("data-type") === "downloaded";
const repoURL = cardElement.querySelector(".b3-card__actions").getAttribute("data-url");
let data: IBazaarItem;
- bazaar.data[bazaarType].find((item: IBazaarItem) => {
+ (isDownloaded ? bazaar.data.downloaded : bazaar.data[bazaarType]).find((item: IBazaarItem) => {
if (item.repoURL === repoURL) {
data = item;
return true;
@@ -233,14 +280,20 @@ export const bazaar = {
`;
- fetchPost("/api/bazaar/getBazaarPackageREAME", {
- repoURL: data.repoURL,
- repoHash: data.repoHash,
- }, response => {
+ if (isDownloaded) {
const mdElement = readmeElement.querySelector(".item__readme");
- mdElement.innerHTML = response.data.html;
+ mdElement.innerHTML = data.readme
highlightRender(mdElement);
- });
+ } else {
+ fetchPost("/api/bazaar/getBazaarPackageREAME", {
+ repoURL: data.repoURL,
+ repoHash: data.repoHash,
+ }, response => {
+ const mdElement = readmeElement.querySelector(".item__readme");
+ mdElement.innerHTML = response.data.html;
+ highlightRender(mdElement);
+ });
+ }
readmeElement.style.right = "0";
},
bindEvent() {
@@ -252,7 +305,25 @@ export const bazaar = {
let target = event.target as HTMLElement;
while (target && !target.isEqualNode(bazaar.element)) {
const type = target.getAttribute("data-type");
- if (type === "goBack") {
+ if (type === "myTheme" || type === "myTemplate" || type === "myIcon" || type === "myWidget") {
+ target.parentElement.childNodes.forEach((item: HTMLElement) => {
+ if (item.nodeType !== 3 && item.classList.contains("b3-button")) {
+ item.classList.add("b3-button--outline");
+ }
+ })
+ target.classList.remove("b3-button--outline");
+ fetchPost(`/api/bazaar/getInstalled${type.replace("my", "")}`, {}, response => {
+ let html = "";
+ response.data.packages.forEach((item: IBazaarItem) => {
+ html += this._genMyHTML(item, type.replace("my", "").toLowerCase() + "s" as TBazaarType);
+ });
+ bazaar.data.downloaded = response.data.packages;
+ bazaar.element.querySelector("#configBazaarDownloaded").innerHTML = `${html}
`;
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ break;
+ } else if (type === "goBack") {
const readmeElement = bazaar.element.querySelector("#configBazaarReadme") as HTMLElement;
readmeElement.style.right = "-100%";
event.preventDefault();
@@ -444,6 +515,15 @@ export const bazaar = {
bazaar.onBazaar(response, "widgets", false);
bazaar.data.widgets = response.data.packages;
});
+ } else if (type === "downloaded") {
+ fetchPost("/api/bazaar/getInstalledTheme", {}, response => {
+ let html = "";
+ response.data.packages.forEach((item: IBazaarItem) => {
+ html += this._genMyHTML(item, "themes");
+ });
+ bazaar.data.downloaded = response.data.packages;
+ bazaar.element.querySelector("#configBazaarDownloaded").innerHTML = `${html}
`;
+ });
}
item.setAttribute("data-init", "true");
}
diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts
index 510767d86..196f584b9 100644
--- a/app/src/types/index.d.ts
+++ b/app/src/types/index.d.ts
@@ -477,6 +477,7 @@ declare interface IMenu {
}
declare interface IBazaarItem {
+ readme: string
stars: string
author: string
updated: string