[Service][appmanifest] Fix app id 44/256744/5
authorDongHyun Song <dh81.song@samsung.com>
Mon, 12 Apr 2021 07:33:52 +0000 (16:33 +0900)
committerDongHyun Song <dh81.song@samsung.com>
Fri, 16 Jul 2021 02:12:32 +0000 (11:12 +0900)
Making same app id by its URL, otherwise duplicate apps cane be
created.

Change-Id: I99cebbfff38c191364ab18f1d9cd8709fef108b0
Signed-off-by: DongHyun Song <dh81.song@samsung.com>
wrt_app/service/builtins/appmanifest_loader.ts

index 3743501..7037b35 100644 (file)
@@ -46,8 +46,8 @@ async function downloadIcon(iconSrc: string, iconFile: string) {
   });
 }
 
-function copyManifest(filePath: string, manifestData: string) {
-  fs.writeFileSync(filePath, manifestData);
+function makeFileSync(file: string, data: string) {
+  fs.writeFileSync(file, data);
 }
 
 function concatWithBaseUrl(url: string, baseUrl: string) {
@@ -95,28 +95,31 @@ function handleStartUrl(appName: string, manifestUrl: string, manifest: any) {
   let startUrl = concatWithBaseUrl(manifest['start_url'], manifestUrl);
   manifest['start_url'] = startUrl;
   manifestFile = `${baseWorkingDir}/${appName}/appmanifest.json`;
-  copyManifest(manifestFile, JSON.stringify(manifest));
+  makeFileSync(manifestFile, JSON.stringify(manifest));
   manifestFile = `${downloadVirtualDir}/${appName}/appmanifest.json`;
   refCount++;
   return startUrl;
 }
 
-function makeRandomId() {
-  return Math.random().toString(36).substring(2, 12);
+function makeAppId(startUrl: string) {
+  let id = Buffer.from(startUrl).toString('base64');
+  id = id.replace(/=/i, '');
+  console.log(`id : ${id}`);
+  return id.substr(2, 12);
 }
 
 function convertConfigXml(appName: string, startUrl: string) {
   convertedConfigXml = `${baseWorkingDir}/${appName}/config.xml`;
-  let id = makeRandomId();
+  let id = makeAppId(startUrl);
   let configXml = `<?xml version='1.0' encoding='UTF-8'?>`;
   configXml += `<widget xmlns='http://www.w3.org/ns/widgets' xmlns:tizen='http://tizen.org/ns/widgets' id='http://yourdomain/AppManifest' version='1.0.0' viewmodes='maximized'>`;
-  configXml += `<tizen:application id='${id}.${appName}' package='${id}' required_version='2.3' />`;
+  configXml += `<tizen:application id='${id}.${appName}' package='${id}' required_version='3.0' />`;
   configXml += `<content src='${startUrl}' />`
   configXml += `<icon src='${iconName}' />`;
   configXml += `<name>${appName}</name>`;
   configXml += `<access origin='*' subdomains='true' />`;
   configXml += `</widget>`;
-  copyManifest(convertedConfigXml, configXml);
+  makeFileSync(convertedConfigXml, configXml);
   convertedConfigXml = `${downloadVirtualDir}/${appName}/config.xml`;
   refCount++;
 }