18c339a94Sopenharmony_ci/* 28c339a94Sopenharmony_ci* Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd. 38c339a94Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License"); 48c339a94Sopenharmony_ci* you may not use this file except in compliance with the License. 58c339a94Sopenharmony_ci* You may obtain a copy of the License at 68c339a94Sopenharmony_ci* 78c339a94Sopenharmony_ci* http://www.apache.org/licenses/LICENSE-2.0 88c339a94Sopenharmony_ci* 98c339a94Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software 108c339a94Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS, 118c339a94Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128c339a94Sopenharmony_ci* See the License for the specific language governing permissions and 138c339a94Sopenharmony_ci* limitations under the License. 148c339a94Sopenharmony_ci*/ 158c339a94Sopenharmony_ciimport napitest from 'libnapitest.so'; 168c339a94Sopenharmony_ciimport testEntry from 'libentry.so'; 178c339a94Sopenharmony_ci 188c339a94Sopenharmony_cilet ns: napitest.NodeISayHello = new napitest.NodeISayHello(); 198c339a94Sopenharmony_ciclass NodeISayHelloListenerImpl { 208c339a94Sopenharmony_ci onSayHelloStart(info: object) { 218c339a94Sopenharmony_ci AppStorage.SetOrCreate("textInfoStart", JSON.stringify(info)) 228c339a94Sopenharmony_ci console.log('napiTestDemo ----onSayHelloStart', JSON.stringify(info)); 238c339a94Sopenharmony_ci } 248c339a94Sopenharmony_ci onSayHelloEnd(info: object) { 258c339a94Sopenharmony_ci console.info("napiTestDemo onSayHelloEnd info type is : " + typeof (info)); 268c339a94Sopenharmony_ci AppStorage.SetOrCreate("textInfoEnd", JSON.stringify(info)) 278c339a94Sopenharmony_ci console.log('napiTestDemo ----onSayHelloEnd.', JSON.stringify(info)); 288c339a94Sopenharmony_ci } 298c339a94Sopenharmony_ci} 308c339a94Sopenharmony_ci 318c339a94Sopenharmony_cilet listener: NodeISayHelloListenerImpl = new NodeISayHelloListenerImpl() 328c339a94Sopenharmony_ci 338c339a94Sopenharmony_ci// register注册的回调 348c339a94Sopenharmony_cifunction onCallbackfunnm(wid: number) { 358c339a94Sopenharmony_ci AppStorage.SetOrCreate("callBackNum", JSON.stringify(wid)) 368c339a94Sopenharmony_ci console.info("napiTestDemo ----onCallbackfunnm wid = " + wid) 378c339a94Sopenharmony_ci return "ocCallbackfuncnm"; 388c339a94Sopenharmony_ci} 398c339a94Sopenharmony_ci 408c339a94Sopenharmony_ci@Entry 418c339a94Sopenharmony_ci@Component 428c339a94Sopenharmony_cistruct Index { 438c339a94Sopenharmony_ci @State addResult: string = ''; 448c339a94Sopenharmony_ci @State promiseRes: string = '' 458c339a94Sopenharmony_ci @State returnVal: string = '' 468c339a94Sopenharmony_ci @StorageLink("textInfoStart")textInfoStart: string = "" 478c339a94Sopenharmony_ci @StorageLink("textInfoEnd")textInfoEnd: string = "" 488c339a94Sopenharmony_ci @StorageLink("callBackNum")callBackNum: string = "" 498c339a94Sopenharmony_ci 508c339a94Sopenharmony_ci build() { 518c339a94Sopenharmony_ci Row() { 528c339a94Sopenharmony_ci Column() { 538c339a94Sopenharmony_ci Button() { 548c339a94Sopenharmony_ci Text('注册object回调后SayHello调用回调') 558c339a94Sopenharmony_ci .fontSize(20) 568c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 578c339a94Sopenharmony_ci } 588c339a94Sopenharmony_ci .type(ButtonType.Capsule) 598c339a94Sopenharmony_ci .margin({ 608c339a94Sopenharmony_ci top: 10 618c339a94Sopenharmony_ci }) 628c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 638c339a94Sopenharmony_ci .width('90%') 648c339a94Sopenharmony_ci .height('5%') 658c339a94Sopenharmony_ci .onClick(() => { 668c339a94Sopenharmony_ci AppStorage.SetOrCreate("textInfoStart", "") 678c339a94Sopenharmony_ci AppStorage.SetOrCreate("textInfoEnd", "") 688c339a94Sopenharmony_ci // 注册回调 698c339a94Sopenharmony_ci ns.addSayHelloListener(listener); 708c339a94Sopenharmony_ci // 调用回调 718c339a94Sopenharmony_ci ns.sayHello("js1", "native1", napitest.SayType.kInitiative); 728c339a94Sopenharmony_ci }) 738c339a94Sopenharmony_ci 748c339a94Sopenharmony_ci Button() { 758c339a94Sopenharmony_ci Text('注销object回调后SayHello调用回调') 768c339a94Sopenharmony_ci .fontSize(20) 778c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 788c339a94Sopenharmony_ci } 798c339a94Sopenharmony_ci .type(ButtonType.Capsule) 808c339a94Sopenharmony_ci .margin({ 818c339a94Sopenharmony_ci top: 10 828c339a94Sopenharmony_ci }) 838c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 848c339a94Sopenharmony_ci .width('90%') 858c339a94Sopenharmony_ci .height('5%') 868c339a94Sopenharmony_ci .onClick(() => { 878c339a94Sopenharmony_ci AppStorage.SetOrCreate("textInfoStart", "") 888c339a94Sopenharmony_ci AppStorage.SetOrCreate("textInfoEnd", "") 898c339a94Sopenharmony_ci // 注销回调 removeSayHelloListener 908c339a94Sopenharmony_ci ns.removeSayHelloListener(listener); 918c339a94Sopenharmony_ci // 调用回调 928c339a94Sopenharmony_ci ns.sayHello("js2", "native2", napitest.SayType.kInitiative); 938c339a94Sopenharmony_ci }) 948c339a94Sopenharmony_ci 958c339a94Sopenharmony_ci // promise回调 968c339a94Sopenharmony_ci Button() { 978c339a94Sopenharmony_ci Text('Promise 回调') 988c339a94Sopenharmony_ci .fontSize(20) 998c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 1008c339a94Sopenharmony_ci } 1018c339a94Sopenharmony_ci .type(ButtonType.Capsule) 1028c339a94Sopenharmony_ci .margin({ 1038c339a94Sopenharmony_ci top: 10 1048c339a94Sopenharmony_ci }) 1058c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 1068c339a94Sopenharmony_ci .width('90%') 1078c339a94Sopenharmony_ci .height('5%') 1088c339a94Sopenharmony_ci .onClick(async () => { 1098c339a94Sopenharmony_ci await ns.sayHelloWithResponse("response from", "response to", napitest.SayType.kResponse).then((ret: object) => { 1108c339a94Sopenharmony_ci this.promiseRes = JSON.stringify(ret); 1118c339a94Sopenharmony_ci console.info("napiTestDemo ----sayHelloWithResponse ret = " + JSON.stringify(ret)); 1128c339a94Sopenharmony_ci }); 1138c339a94Sopenharmony_ci }) 1148c339a94Sopenharmony_ci 1158c339a94Sopenharmony_ci Button() { 1168c339a94Sopenharmony_ci Text('register回调后sayHi调用回调') 1178c339a94Sopenharmony_ci .fontSize(20) 1188c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 1198c339a94Sopenharmony_ci } 1208c339a94Sopenharmony_ci .type(ButtonType.Capsule) 1218c339a94Sopenharmony_ci .margin({ 1228c339a94Sopenharmony_ci top: 10 1238c339a94Sopenharmony_ci }) 1248c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 1258c339a94Sopenharmony_ci .width('90%') 1268c339a94Sopenharmony_ci .height('5%') 1278c339a94Sopenharmony_ci .onClick( () => { 1288c339a94Sopenharmony_ci AppStorage.SetOrCreate("callBackNum", "") 1298c339a94Sopenharmony_ci // 注册回调 1308c339a94Sopenharmony_ci ns.registerCallbackfunc(onCallbackfunnm); 1318c339a94Sopenharmony_ci // 调用回调 1328c339a94Sopenharmony_ci ns.sayHi("js3", "native3", napitest.SayType.kResponse); 1338c339a94Sopenharmony_ci }) 1348c339a94Sopenharmony_ci 1358c339a94Sopenharmony_ci Button() { 1368c339a94Sopenharmony_ci Text('unRegister回调后sayHi调用回调') 1378c339a94Sopenharmony_ci .fontSize(20) 1388c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 1398c339a94Sopenharmony_ci } 1408c339a94Sopenharmony_ci .type(ButtonType.Capsule) 1418c339a94Sopenharmony_ci .margin({ 1428c339a94Sopenharmony_ci top: 10 1438c339a94Sopenharmony_ci }) 1448c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 1458c339a94Sopenharmony_ci .width('90%') 1468c339a94Sopenharmony_ci .height('5%') 1478c339a94Sopenharmony_ci .onClick( () => { 1488c339a94Sopenharmony_ci AppStorage.SetOrCreate("callBackNum", "") 1498c339a94Sopenharmony_ci // 注销回调 1508c339a94Sopenharmony_ci ns.unRegisterCallbackfunc(onCallbackfunnm); 1518c339a94Sopenharmony_ci // 调用回调 1528c339a94Sopenharmony_ci ns.sayHi("js4", "native4", napitest.SayType.kResponse); 1538c339a94Sopenharmony_ci }) 1548c339a94Sopenharmony_ci 1558c339a94Sopenharmony_ci // 调用普通函数 1568c339a94Sopenharmony_ci Button() { 1578c339a94Sopenharmony_ci Text('调用funcTest方法') 1588c339a94Sopenharmony_ci .fontSize(20) 1598c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 1608c339a94Sopenharmony_ci } 1618c339a94Sopenharmony_ci .type(ButtonType.Capsule) 1628c339a94Sopenharmony_ci .margin({ 1638c339a94Sopenharmony_ci top: 10 1648c339a94Sopenharmony_ci }) 1658c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 1668c339a94Sopenharmony_ci .width('90%') 1678c339a94Sopenharmony_ci .height('5%') 1688c339a94Sopenharmony_ci .onClick( () => { 1698c339a94Sopenharmony_ci this.returnVal = napitest.funcTest(false); 1708c339a94Sopenharmony_ci console.info("napiTestDemo ----funcTest returnVal = " + this.returnVal) 1718c339a94Sopenharmony_ci }) 1728c339a94Sopenharmony_ci 1738c339a94Sopenharmony_ci // 调用其他模块的方法 1748c339a94Sopenharmony_ci Button() { 1758c339a94Sopenharmony_ci Text('调用entry模块的方法') 1768c339a94Sopenharmony_ci .fontSize(20) 1778c339a94Sopenharmony_ci .fontWeight(FontWeight.Bold) 1788c339a94Sopenharmony_ci } 1798c339a94Sopenharmony_ci .type(ButtonType.Capsule) 1808c339a94Sopenharmony_ci .margin({ 1818c339a94Sopenharmony_ci top: 10 1828c339a94Sopenharmony_ci }) 1838c339a94Sopenharmony_ci .backgroundColor('#0D9FFB') 1848c339a94Sopenharmony_ci .width('90%') 1858c339a94Sopenharmony_ci .height('5%') 1868c339a94Sopenharmony_ci .onClick( () => { 1878c339a94Sopenharmony_ci this.addResult = testEntry.add(2, 3).toString(); 1888c339a94Sopenharmony_ci console.info("napiTestDemo ----add addResult = " + this.addResult) 1898c339a94Sopenharmony_ci }) 1908c339a94Sopenharmony_ci 1918c339a94Sopenharmony_ci Text('promise回调: promiseResult = ' + this.promiseRes).margin({ top: 10 }) 1928c339a94Sopenharmony_ci Text('sayHelloStart回调: info = ' + this.textInfoStart).margin({ top: 10 }) 1938c339a94Sopenharmony_ci Text('sayHelloEnd回调: info = ' + this.textInfoEnd).margin({ top: 10 }) 1948c339a94Sopenharmony_ci Text('register注册的回调: wid = ' + this.callBackNum).margin({ top: 10 }) 1958c339a94Sopenharmony_ci Text('普通方法funcTest返回值: returnVal = ' + this.returnVal).margin({ top: 10 }) 1968c339a94Sopenharmony_ci Text('libentry模块: 2 + 3 = ' + this.addResult).margin({ top: 10 }) 1978c339a94Sopenharmony_ci } 1988c339a94Sopenharmony_ci .width('100%') 1998c339a94Sopenharmony_ci } 2008c339a94Sopenharmony_ci .height('100%') 2018c339a94Sopenharmony_ci } 2028c339a94Sopenharmony_ci} 203