Yuki Takei 2 лет назад
Родитель
Сommit
bbf2511cd3

+ 12 - 7
apps/app/src/components/TemplateModal/TemplateModal.tsx

@@ -31,19 +31,19 @@ const logger = loggerFactory('growi:components:TemplateModal');
 function constructTemplateId(templateSummary: TemplateSummary): string {
   const defaultTemplate = templateSummary.default;
 
-  return `${defaultTemplate.namespace ?? ''}_${defaultTemplate.id}`;
+  return `${defaultTemplate.pluginId ?? ''}_${defaultTemplate.id}`;
 }
 
 
 type TemplateRadioButtonProps = {
   templateSummary: TemplateSummary,
-  onChange: (selectedTemplate: TemplateSummary) => void,
+  onClick?: () => void,
   usersDefaultLang?: Lang,
   isSelected?: boolean,
 }
 
 const TemplateListGroupItem = ({
-  templateSummary, onChange, usersDefaultLang, isSelected,
+  templateSummary, onClick, usersDefaultLang, isSelected,
 }: TemplateRadioButtonProps): JSX.Element => {
   const templateId = constructTemplateId(templateSummary);
   const locales = new Set(Object.values(templateSummary).map(s => s.locale));
@@ -55,7 +55,12 @@ const TemplateListGroupItem = ({
   assert(template.isValid);
 
   return (
-    <a key={templateId} className={`list-group-item list-group-item-action ${isSelected ? 'active' : ''}`} aria-current="true">
+    <a
+      key={templateId}
+      className={`list-group-item list-group-item-action ${isSelected ? 'active' : ''}`}
+      onClick={onClick}
+      aria-current="true"
+    >
       <h4 className="mb-1">{template.title}</h4>
       <p className="mb-2">{template.desc}</p>
       { Array.from(locales).map(locale => (
@@ -115,15 +120,15 @@ export const TemplateModal = (): JSX.Element => {
           <div className="d-none d-lg-block col-lg-4">
             <div className="list-group">
               { templateSummaries.map((templateSummary) => {
-                const templateId = (templateSummary.default.namespace ?? '') + templateSummary.default.id;
+                const templateId = constructTemplateId(templateSummary);
 
                 return (
                   <TemplateListGroupItem
                     key={templateId}
                     templateSummary={templateSummary}
                     usersDefaultLang={personalSettingsInfo?.lang}
-                    onChange={() => setSelectedTemplate(templateSummary)}
-                    isSelected={selectedTemplate != null && constructTemplateId(selectedTemplate) === constructTemplateId(templateSummary)}
+                    onClick={() => setSelectedTemplate(templateSummary)}
+                    isSelected={selectedTemplate != null && constructTemplateId(selectedTemplate) === templateId}
                   />
                 );
               }) }

+ 1 - 1
packages/pluginkit/src/interfaces/v4/template.ts

@@ -1,7 +1,7 @@
 export type TemplateStatusBasis = {
-  namespace?: string,
   id: string,
   locale: string,
+  pluginId?: string,
 }
 export type TemplateStatusValid = TemplateStatusBasis & {
   isValid: true,

+ 6 - 6
packages/pluginkit/src/server/utils/v4/template.ts

@@ -72,7 +72,7 @@ export const scanTemplateStatus = async(
     templateId: string,
     data: GrowiTemplatePluginValidationData,
     opts?: {
-      namespace?: string,
+      pluginId?: string,
     },
 ): Promise<TemplateStatus[]> => {
   const status: TemplateStatus[] = [];
@@ -95,7 +95,7 @@ export const scanTemplateStatus = async(
 
       const isDefault = !isDefaultPushed;
       status.push({
-        namespace: opts?.namespace,
+        pluginId: opts?.pluginId,
         id: templateId,
         locale,
         isValid: true,
@@ -107,7 +107,7 @@ export const scanTemplateStatus = async(
     }
     catch (err) {
       status.push({
-        namespace: opts?.namespace,
+        pluginId: opts?.pluginId,
         id: templateId,
         locale,
         isValid: false,
@@ -126,7 +126,7 @@ export const scanAllTemplateStatus = async(
     projectDirRoot: string,
     opts?: {
       data?: GrowiTemplatePluginValidationData,
-      namespace?: string,
+      pluginId?: string,
       returnsInvalidTemplates?: boolean,
     },
 ): Promise<TemplateSummary[]> => {
@@ -139,7 +139,7 @@ export const scanAllTemplateStatus = async(
   const distDirFiles = fs.readdirSync(distDirPath);
 
   for await (const templateId of distDirFiles) {
-    const status = (await scanTemplateStatus(projectDirRoot, templateId, data, { namespace: opts?.namespace }))
+    const status = (await scanTemplateStatus(projectDirRoot, templateId, data, { pluginId: opts?.pluginId }))
       // omit invalid templates if `returnsInvalidTemplates` is true
       .filter(s => (opts?.returnsInvalidTemplates ? true : s.isValid));
 
@@ -174,7 +174,7 @@ export const validateTemplatePlugin = async(projectDirRoot: string): Promise<boo
   // key: id
   // value: isValid properties
   const idValidMap: { [id: string]: boolean[] } = {};
-  Object.entries(results).forEach(([index, summary]) => {
+  results.forEach((summary) => {
     idValidMap[summary.default.id] = Object.values(summary).map(s => s?.isValid ?? false);
   });