2024-10-19 07:03:35 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
const navPushPathHelperApi = requireInternal('atomicservice.NavPushPathHelper');
|
|
|
|
const hilog = requireNapi('hilog');
|
|
|
|
|
|
|
|
const tag = 'NavPushPathHelper::JS::';
|
|
|
|
|
|
|
|
export class NavPushPathHelper {
|
|
|
|
static currentID = 0;
|
|
|
|
constructor(navPathStack) {
|
|
|
|
this.navPathStack_ = navPathStack;
|
|
|
|
this.currentHelperId_ = NavPushPathHelper.currentID;
|
|
|
|
NavPushPathHelper.currentID++;
|
|
|
|
}
|
|
|
|
|
|
|
|
async pushPath(moduleName, info, optionParam) {
|
|
|
|
hilog.info(0x3900, tag, `pushPath -> currentID: ${this.currentHelperId_}`);
|
|
|
|
if (navPushPathHelperApi.isHspExist(moduleName, info.name)) {
|
|
|
|
this.navPathStack_?.pushPath(info, optionParam);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
navPushPathHelperApi.silentInstall(moduleName, () => {
|
2024-10-25 02:50:57 +00:00
|
|
|
navPushPathHelperApi.updateRouteMap();
|
2024-10-19 07:03:35 +00:00
|
|
|
this.navPathStack_?.pushPath(info, optionParam);
|
|
|
|
resolve();
|
|
|
|
},
|
|
|
|
(error) => {
|
|
|
|
const err = new Error(error.message);
|
|
|
|
err.code = error.code;
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
async pushDestination(moduleName, info, optionParam) {
|
|
|
|
hilog.info(0x3900, tag, `pushDestination -> currentID: ${this.currentHelperId_}`);
|
|
|
|
if (navPushPathHelperApi.isHspExist(moduleName, info.name)) {
|
|
|
|
await this.navPathStack_?.pushDestination(info, optionParam);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
navPushPathHelperApi.silentInstall(moduleName, () => {
|
2024-10-25 02:50:57 +00:00
|
|
|
navPushPathHelperApi.updateRouteMap();
|
2024-10-19 07:03:35 +00:00
|
|
|
this.navPathStack_?.pushDestination(info, optionParam)
|
|
|
|
.then(resolve).catch(reject);
|
|
|
|
}, (error) => {
|
|
|
|
const err = new Error(error.message);
|
|
|
|
err.code = error.code;
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
async pushPathByName(moduleName, name, param, onPop, optionParam) {
|
|
|
|
hilog.info(0x3900, tag, `pushPathByName -> currentID: ${this.currentHelperId_}`);
|
|
|
|
if (navPushPathHelperApi.isHspExist(moduleName, name)) {
|
|
|
|
this.navPathStack_?.pushPathByName(name, param, onPop, optionParam);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
navPushPathHelperApi.silentInstall(moduleName, () => {
|
2024-10-25 02:50:57 +00:00
|
|
|
hilog.info(0x3900, tag, `silentInstall success`);
|
|
|
|
navPushPathHelperApi.updateRouteMap();
|
2024-10-19 07:03:35 +00:00
|
|
|
this.navPathStack_?.pushPathByName(name, param, onPop, optionParam);
|
|
|
|
resolve();
|
|
|
|
}, (error) => {
|
|
|
|
const err = new Error(error.message);
|
|
|
|
err.code = error.code;
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
async pushDestinationByName(moduleName, name, param, onPop, optionParam) {
|
|
|
|
hilog.info(0x3900, tag, `pushDestinationByName -> currentID: ${this.currentHelperId_}`);
|
|
|
|
if (navPushPathHelperApi.isHspExist(moduleName, name)) {
|
|
|
|
await this.navPathStack_?.pushDestinationByName(name, param, onPop, optionParam);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
navPushPathHelperApi.silentInstall(moduleName, () => {
|
2024-10-25 02:50:57 +00:00
|
|
|
navPushPathHelperApi.updateRouteMap();
|
2024-10-19 07:03:35 +00:00
|
|
|
this.navPathStack_?.pushDestinationByName(name, param, onPop, optionParam)
|
|
|
|
.then(resolve).catch(reject);
|
|
|
|
}, (error) => {
|
|
|
|
const err = new Error(error.message);
|
|
|
|
err.code = error.code;
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
async replacePath(moduleName, info, optionParam) {
|
|
|
|
hilog.info(0x3900, tag, `replacePath -> currentID: ${this.currentHelperId_}`);
|
|
|
|
if (navPushPathHelperApi.isHspExist(moduleName, info.name)) {
|
|
|
|
this.navPathStack_?.replacePath(info, optionParam);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
navPushPathHelperApi.silentInstall(moduleName, () => {
|
2024-10-25 02:50:57 +00:00
|
|
|
navPushPathHelperApi.updateRouteMap();
|
2024-10-19 07:03:35 +00:00
|
|
|
this.navPathStack_?.replacePath(info, optionParam);
|
|
|
|
resolve();
|
|
|
|
}, (error) => {
|
|
|
|
const err = new Error(error.message);
|
|
|
|
err.code = error.code;
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
async replacePathByName(moduleName, name, param, optionParam) {
|
|
|
|
hilog.info(0x3900, tag, `replacePathByName -> currentID: ${this.currentHelperId_}`);
|
|
|
|
if (navPushPathHelperApi.isHspExist(moduleName, name)) {
|
|
|
|
this.navPathStack_?.replacePathByName(name, param, optionParam);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
navPushPathHelperApi.silentInstall(moduleName, () => {
|
|
|
|
hilog.info(0x3900, tag, `silentInstall success`);
|
2024-10-25 02:50:57 +00:00
|
|
|
navPushPathHelperApi.updateRouteMap();
|
2024-10-19 07:03:35 +00:00
|
|
|
this.navPathStack_?.replacePathByName(name, param, optionParam);
|
|
|
|
resolve();
|
|
|
|
}, (error) => {
|
|
|
|
const err = new Error(error.message);
|
|
|
|
err.code = error.code;
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default { NavPushPathHelper };
|