@wix/himalaya-cli 0.1388.0 → 0.1389.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/commerce-contract.d.ts +24 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/commerce-core.d.ts +3 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/index.d.ts +1 -1
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap-checkout.mjs +57 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +57 -0
  6. package/dist/cli.mjs +7 -5
  7. package/guides/iap-screen-adoption.md +53 -1
  8. package/guides/sdk-reference.json +8 -2
  9. package/package.json +2 -2
  10. package/templates/beauty-salon/dev/index.ts +193 -1
  11. package/templates/beauty-salon/tier5-src/_shared/iap-worker.ts +84 -3
  12. package/templates/beauty-salon/tier5-src/himi-store-account/index.ts +36 -1
  13. package/templates/beauty-salon-owner/config.ts +11 -0
  14. package/templates/beauty-salon-owner/dev/index.ts +540 -0
  15. package/templates/beauty-salon-owner/himalaya.content.json +6 -0
  16. package/templates/beauty-salon-owner/platforms.json +2 -1
  17. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  18. package/templates/branded-lite/dev/index.ts +194 -2
  19. package/templates/branded-lite/tier5-src/_shared/iap-worker.ts +84 -3
  20. package/templates/branded-lite/tier5-src/himi-store-account/index.ts +36 -1
  21. package/templates/community-club/dev/index.ts +193 -1
  22. package/templates/community-club/tier5-src/_shared/iap-worker.ts +84 -3
  23. package/templates/community-club/tier5-src/himi-store-account/index.ts +36 -1
  24. package/templates/community-club-owner/config.ts +11 -0
  25. package/templates/community-club-owner/dev/index.ts +540 -0
  26. package/templates/community-club-owner/himalaya.content.json +6 -0
  27. package/templates/community-club-owner/platforms.json +2 -1
  28. package/templates/community-club-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  29. package/templates/events-meetups/dev/index.ts +193 -1
  30. package/templates/events-meetups/tier5-src/_shared/iap-worker.ts +84 -3
  31. package/templates/events-meetups/tier5-src/himi-store-account/index.ts +36 -1
  32. package/templates/events-meetups-owner/config.ts +11 -0
  33. package/templates/events-meetups-owner/dev/index.ts +540 -0
  34. package/templates/events-meetups-owner/himalaya.content.json +6 -0
  35. package/templates/events-meetups-owner/platforms.json +2 -1
  36. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  37. package/templates/gym-fitness/dev/index.ts +193 -1
  38. package/templates/gym-fitness/tier5-src/_shared/iap-worker.ts +84 -3
  39. package/templates/gym-fitness/tier5-src/himi-store-account/index.ts +36 -1
  40. package/templates/gym-fitness-owner/config.ts +11 -0
  41. package/templates/gym-fitness-owner/dev/index.ts +540 -0
  42. package/templates/gym-fitness-owner/himalaya.content.json +6 -0
  43. package/templates/gym-fitness-owner/platforms.json +2 -1
  44. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  45. package/templates/nonprofit-cause/dev/index.ts +193 -1
  46. package/templates/nonprofit-cause/tier5-src/_shared/iap-worker.ts +84 -3
  47. package/templates/nonprofit-cause/tier5-src/himi-store-account/index.ts +36 -1
  48. package/templates/nonprofit-cause-owner/config.ts +11 -0
  49. package/templates/nonprofit-cause-owner/dev/index.ts +540 -0
  50. package/templates/nonprofit-cause-owner/himalaya.content.json +6 -0
  51. package/templates/nonprofit-cause-owner/platforms.json +2 -1
  52. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  53. package/templates/owner-lite/config.ts +11 -0
  54. package/templates/owner-lite/dev/index.ts +540 -0
  55. package/templates/owner-lite/himalaya.content.json +6 -0
  56. package/templates/owner-lite/platforms.json +2 -1
  57. package/templates/owner-lite/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  58. package/templates/podcast-creator/dev/index.ts +193 -1
  59. package/templates/podcast-creator/tier5-src/_shared/iap-worker.ts +84 -3
  60. package/templates/podcast-creator/tier5-src/himi-store-account/index.ts +36 -1
  61. package/templates/podcast-creator-owner/config.ts +11 -0
  62. package/templates/podcast-creator-owner/dev/index.ts +540 -0
  63. package/templates/podcast-creator-owner/himalaya.content.json +6 -0
  64. package/templates/podcast-creator-owner/platforms.json +2 -1
  65. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  66. package/templates/portfolio-creative/dev/index.ts +193 -1
  67. package/templates/portfolio-creative/tier5-src/_shared/iap-worker.ts +84 -3
  68. package/templates/portfolio-creative/tier5-src/himi-store-account/index.ts +36 -1
  69. package/templates/portfolio-creative-owner/config.ts +11 -0
  70. package/templates/portfolio-creative-owner/dev/index.ts +540 -0
  71. package/templates/portfolio-creative-owner/himalaya.content.json +6 -0
  72. package/templates/portfolio-creative-owner/platforms.json +2 -1
  73. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  74. package/templates/restaurant/dev/index.ts +193 -1
  75. package/templates/restaurant/tier5-src/_shared/iap-worker.ts +84 -3
  76. package/templates/restaurant/tier5-src/himi-store-account/index.ts +36 -1
  77. package/templates/restaurant-owner/config.ts +11 -0
  78. package/templates/restaurant-owner/dev/index.ts +540 -0
  79. package/templates/restaurant-owner/himalaya.content.json +6 -0
  80. package/templates/restaurant-owner/platforms.json +2 -1
  81. package/templates/restaurant-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  82. package/templates/retail-store/dev/index.ts +193 -1
  83. package/templates/retail-store/tier5-src/_shared/iap-worker.ts +84 -3
  84. package/templates/retail-store/tier5-src/himi-store-account/index.ts +36 -1
  85. package/templates/retail-store-owner/config.ts +11 -0
  86. package/templates/retail-store-owner/dev/index.ts +540 -0
  87. package/templates/retail-store-owner/himalaya.content.json +6 -0
  88. package/templates/retail-store-owner/platforms.json +2 -1
  89. package/templates/retail-store-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
  90. package/templates/yoga-studio/dev/index.ts +193 -1
  91. package/templates/yoga-studio/tier5-src/_shared/iap-worker.ts +84 -3
  92. package/templates/yoga-studio/tier5-src/himi-store-account/index.ts +36 -1
  93. package/templates/yoga-studio-owner/config.ts +11 -0
  94. package/templates/yoga-studio-owner/dev/index.ts +540 -0
  95. package/templates/yoga-studio-owner/himalaya.content.json +6 -0
  96. package/templates/yoga-studio-owner/platforms.json +2 -1
  97. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-wrist/index.ts +350 -0
@@ -14,6 +14,8 @@ import { searchOrders, type WixOrder } from "@himalaya/wix-ecom";
14
14
  import { guestProfile, loadMemberProfile, strOf, fmtDate, titleCase, type AccountActivityRow } from "../_shared/himi-account";
15
15
  import { stashCopy, copyParam, copyTemplate } from "../_shared/himi-copy.js";
16
16
  import { memberAccountRoutes } from "../_shared/member-account-routes.js";
17
+ import { createIapCommerce, onlineProgramOrders, pricingPlanOrders, storesAppleSalesEnabled, storesProductOrders } from "@himalaya/iap-checkout";
18
+ import { IAP_RESTORE_KEYS, NO_IAP_RESTORE, createIapRestore, resetUnhydratedKeysOnOlderRuntime, type IapRestoreFields } from "../_shared/iap-worker.js";
17
19
 
18
20
  interface AuthRouteInput {
19
21
  intent?: string;
@@ -152,7 +154,7 @@ function authHeadline(s: S, isRegistering: boolean, isRecovering: boolean): { au
152
154
  }
153
155
  }
154
156
 
155
- interface S {
157
+ interface S extends IapRestoreFields {
156
158
  status: "loading" | "ready";
157
159
  isMember: boolean;
158
160
  notMember: boolean;
@@ -214,6 +216,27 @@ interface S {
214
216
  noMemberAddresses: boolean;
215
217
  /** Hides My Wallet where this runtime cannot reach saved cards. */
216
218
  noMemberWallet: boolean;
219
+ /** Set once a descriptor asks for the Restore purchases row (appear param
220
+ * `restorePurchases: "1"`). Only then does the worker reach the App Store layer, so a
221
+ * descriptor that renders no such row need not declare `iap`. */
222
+ restorePurchases: boolean;
223
+ }
224
+
225
+ // Restore purchases (App Review 3.1.1) for every vertical the app sells through the App Store. The
226
+ // row shows once purchasing is ready on this host (a bound iOS binary with managed StoreKit), to a
227
+ // guest too: the restore itself asks them to sign in.
228
+ const commerce = createIapCommerce({
229
+ adapters: [onlineProgramOrders, pricingPlanOrders, ...(storesAppleSalesEnabled() ? [storesProductOrders] : [])],
230
+ onChange: () => { void svc.restorePublish(); },
231
+ });
232
+ const restore = createIapRestore(commerce, { prefix: "storeAccount", repaint: () => { void svc.restorePublish(); } });
233
+ let commerceEntered = false;
234
+
235
+ /** The first entry reads readiness and recovers held purchases; later ones reconcile, as on any
236
+ * screen that sells. */
237
+ function enterCommerce(): void {
238
+ void (commerceEntered ? commerce.reconcile() : commerce.start());
239
+ commerceEntered = true;
217
240
  }
218
241
 
219
242
  function derive(s: S): S {
@@ -234,6 +257,7 @@ function derive(s: S): S {
234
257
  hideSignInChoices: isRegistering || isRecovering,
235
258
  hasActivity,
236
259
  noActivity: !hasActivity,
260
+ ...restore.fields(s.restorePurchases && commerce.readiness().status === "ready"),
237
261
  authTitle: headline.authTitle,
238
262
  authBody: headline.authBody,
239
263
  hasReturnPath,
@@ -288,6 +312,8 @@ async function probe(s: S, arg?: unknown): Promise<S> {
288
312
  const intent = authIntentFromArg(arg, s);
289
313
  const profile = await loadMemberProfile(copyParam("storeAccount.guestDetail", "Sign in to keep your cart and orders connected."));
290
314
  const memberAccountLinks = s.memberAccountLinks || strField(arg, "memberAccountLinks") === "1";
315
+ const restorePurchases = s.restorePurchases || strField(arg, "restorePurchases") === "1";
316
+ if (restorePurchases) enterCommerce();
291
317
  const routes = memberAccountLinks ? await memberAccountRoutes() : { addresses: false, wallet: false };
292
318
  let activityRows: AccountActivityRow[] = [];
293
319
  if (profile.isMember) {
@@ -313,6 +339,7 @@ async function probe(s: S, arg?: unknown): Promise<S> {
313
339
  email: profile.memberEmail || s.email,
314
340
  message: "",
315
341
  memberAccountLinks,
342
+ restorePurchases,
316
343
  noMemberAddresses: !routes.addresses,
317
344
  noMemberWallet: !routes.wallet,
318
345
  activityRows,
@@ -365,7 +392,10 @@ const svc = defineService<S, {
365
392
  signIn: (s: S) => Promise<S | undefined>;
366
393
  register: (s: S) => Promise<S | undefined>;
367
394
  signOut: (s: S) => Promise<S>;
395
+ restorePublish: (s: S) => S;
396
+ iapRestore: (s: S) => Promise<undefined>;
368
397
  }>("himiStoreAccount", {
398
+ notHydrated: [...IAP_RESTORE_KEYS],
369
399
  state: derive({
370
400
  status: "loading",
371
401
  isMember: false,
@@ -411,6 +441,8 @@ const svc = defineService<S, {
411
441
  memberAccountLinks: false,
412
442
  noMemberAddresses: true,
413
443
  noMemberWallet: true,
444
+ restorePurchases: false,
445
+ ...NO_IAP_RESTORE,
414
446
  }),
415
447
  actions: {
416
448
  load: (s, arg) => { stashCopy(arg); return probe(s, arg); },
@@ -503,8 +535,11 @@ const svc = defineService<S, {
503
535
  };
504
536
  return derive(cleared);
505
537
  },
538
+ restorePublish: (s) => derive(s),
539
+ iapRestore: async () => { await restore.run(); return undefined; },
506
540
  },
507
541
  });
508
542
 
543
+ resetUnhydratedKeysOnOlderRuntime(svc, { ...svc.getState(), ...NO_IAP_RESTORE }, IAP_RESTORE_KEYS);
509
544
  svc.load();
510
545
  export { svc };
@@ -41,6 +41,17 @@ export default defineApp({
41
41
  designTokensPath: "./tokens.json",
42
42
  navigation: {
43
43
  "navKind": "responsive",
44
+ "surfaces": {
45
+ "watch": {
46
+ "destinations": [
47
+ "home"
48
+ ],
49
+ "navKind": "single",
50
+ "screenIds": {
51
+ "home": "himi_owner_lite_wrist_home"
52
+ }
53
+ }
54
+ },
44
55
  "scheme": "himalaya-__HIMI_APP_SLUG__",
45
56
  "deepLinkPatterns": [],
46
57
  "linkableScreens": [
@@ -63441,6 +63441,546 @@ const SCREENS = runtimeSetting({
63441
63441
  "bundleVersion": "0.0.1"
63442
63442
  }
63443
63443
  },
63444
+ "himi_owner_lite_wrist_home": {
63445
+ "screenId": "himi_owner_lite_wrist_home",
63446
+ "renderer": "sdui_intent",
63447
+ "title": "Next up",
63448
+ "schemaVersion": 1,
63449
+ "cacheControl": {
63450
+ "maxAge": 0,
63451
+ "staleWhileRevalidate": 0
63452
+ },
63453
+ "telemetryScreenName": "himi_owner_lite_wrist_home",
63454
+ "payload": {
63455
+ "id": "himi_owner_lite_wrist_home.root",
63456
+ "body": {
63457
+ "package": "himalaya",
63458
+ "type": "VStack",
63459
+ "props": {
63460
+ "spacing": 8,
63461
+ "alignment": "leading",
63462
+ "children": [
63463
+ {
63464
+ "id": "wrist.site",
63465
+ "body": {
63466
+ "package": "himalaya",
63467
+ "type": "Text",
63468
+ "props": {
63469
+ "text": "$service:ownerWrist.siteName",
63470
+ "style": "caption",
63471
+ "color": "textSecondary",
63472
+ "maxLines": 1,
63473
+ "collapseWhenEmpty": true
63474
+ }
63475
+ }
63476
+ },
63477
+ {
63478
+ "id": "wrist.home.message",
63479
+ "body": {
63480
+ "package": "himalaya",
63481
+ "type": "Text",
63482
+ "props": {
63483
+ "text": "$service:ownerWrist.message",
63484
+ "style": "footnote",
63485
+ "color": "textSecondary",
63486
+ "maxLines": 3,
63487
+ "collapseWhenEmpty": true
63488
+ }
63489
+ }
63490
+ },
63491
+ {
63492
+ "id": "wrist.home.error",
63493
+ "body": {
63494
+ "package": "himalaya",
63495
+ "type": "Text",
63496
+ "props": {
63497
+ "text": "$service:ownerWrist.actionError",
63498
+ "style": "caption",
63499
+ "color": "danger",
63500
+ "maxLines": 3,
63501
+ "collapseWhenEmpty": true
63502
+ }
63503
+ }
63504
+ },
63505
+ {
63506
+ "id": "",
63507
+ "body": {
63508
+ "package": "himalaya",
63509
+ "type": "VStack",
63510
+ "props": {
63511
+ "spacing": 2,
63512
+ "alignment": "leading",
63513
+ "children": [
63514
+ {
63515
+ "id": "wrist.next.label",
63516
+ "body": {
63517
+ "package": "himalaya",
63518
+ "type": "Text",
63519
+ "props": {
63520
+ "text": "Next up",
63521
+ "style": "caption",
63522
+ "color": "textSecondary"
63523
+ }
63524
+ }
63525
+ },
63526
+ {
63527
+ "id": "wrist.next.countdown",
63528
+ "body": {
63529
+ "package": "himalaya",
63530
+ "type": "Text",
63531
+ "props": {
63532
+ "text": "$service:ownerWrist.nextUp.countdown",
63533
+ "style": "title1",
63534
+ "monospacedDigits": true
63535
+ }
63536
+ }
63537
+ },
63538
+ {
63539
+ "id": "wrist.next.name",
63540
+ "body": {
63541
+ "package": "himalaya",
63542
+ "type": "Text",
63543
+ "props": {
63544
+ "text": "$service:ownerWrist.nextUp.name",
63545
+ "style": "bodyEmphasis",
63546
+ "maxLines": 1
63547
+ }
63548
+ }
63549
+ },
63550
+ {
63551
+ "id": "wrist.next.service",
63552
+ "body": {
63553
+ "package": "himalaya",
63554
+ "type": "Text",
63555
+ "props": {
63556
+ "text": "$service:ownerWrist.nextUp.service",
63557
+ "style": "footnote",
63558
+ "maxLines": 1
63559
+ }
63560
+ }
63561
+ },
63562
+ {
63563
+ "id": "wrist.next.range",
63564
+ "body": {
63565
+ "package": "himalaya",
63566
+ "type": "Text",
63567
+ "props": {
63568
+ "text": "$service:ownerWrist.nextUp.rangeLabel",
63569
+ "style": "caption",
63570
+ "color": "textSecondary"
63571
+ }
63572
+ }
63573
+ }
63574
+ ]
63575
+ }
63576
+ },
63577
+ "modifiers": {
63578
+ "hiddenPath": "$service:ownerWrist.doneToday"
63579
+ }
63580
+ },
63581
+ {
63582
+ "id": "",
63583
+ "body": {
63584
+ "package": "himalaya",
63585
+ "type": "VStack",
63586
+ "props": {
63587
+ "spacing": 2,
63588
+ "alignment": "leading",
63589
+ "children": [
63590
+ {
63591
+ "id": "wrist.tomorrow.label",
63592
+ "body": {
63593
+ "package": "himalaya",
63594
+ "type": "Text",
63595
+ "props": {
63596
+ "text": "$service:ownerWrist.tomorrowFirst.whenLabel",
63597
+ "style": "caption",
63598
+ "color": "textSecondary"
63599
+ }
63600
+ }
63601
+ },
63602
+ {
63603
+ "id": "wrist.tomorrow.time",
63604
+ "body": {
63605
+ "package": "himalaya",
63606
+ "type": "Text",
63607
+ "props": {
63608
+ "text": "$service:ownerWrist.tomorrowFirst.timeLabel",
63609
+ "style": "bodyEmphasis"
63610
+ }
63611
+ }
63612
+ },
63613
+ {
63614
+ "id": "wrist.tomorrow.name",
63615
+ "body": {
63616
+ "package": "himalaya",
63617
+ "type": "Text",
63618
+ "props": {
63619
+ "text": "$service:ownerWrist.tomorrowFirst.name",
63620
+ "style": "footnote",
63621
+ "maxLines": 1
63622
+ }
63623
+ }
63624
+ }
63625
+ ]
63626
+ }
63627
+ },
63628
+ "modifiers": {
63629
+ "hiddenPath": "$service:ownerWrist.hideTomorrow"
63630
+ }
63631
+ },
63632
+ {
63633
+ "id": "wrist.requests.badge",
63634
+ "body": {
63635
+ "package": "himalaya",
63636
+ "type": "Button",
63637
+ "props": {
63638
+ "title": "$service:ownerWrist.requestBadge",
63639
+ "style": "primary",
63640
+ "fullWidth": true,
63641
+ "action": {
63642
+ "actionId": "companion.ownerLite.openRequests"
63643
+ }
63644
+ }
63645
+ },
63646
+ "modifiers": {
63647
+ "hiddenPath": "$service:ownerWrist.noRequests"
63648
+ }
63649
+ },
63650
+ {
63651
+ "id": "wrist.requests.none",
63652
+ "body": {
63653
+ "package": "himalaya",
63654
+ "type": "Text",
63655
+ "props": {
63656
+ "text": "No requests waiting",
63657
+ "style": "caption",
63658
+ "color": "textSecondary"
63659
+ }
63660
+ },
63661
+ "modifiers": {
63662
+ "hiddenPath": "$service:ownerWrist.hideNoRequests"
63663
+ }
63664
+ },
63665
+ {
63666
+ "id": "wrist.later",
63667
+ "body": {
63668
+ "package": "himalaya",
63669
+ "type": "LazyList",
63670
+ "props": {
63671
+ "spacing": 4,
63672
+ "itemsPath": "$service:ownerWrist.later",
63673
+ "items": [
63674
+ {
63675
+ "id": "",
63676
+ "body": {
63677
+ "package": "himalaya",
63678
+ "type": "VStack",
63679
+ "props": {
63680
+ "spacing": 0,
63681
+ "alignment": "leading",
63682
+ "children": [
63683
+ {
63684
+ "id": "",
63685
+ "body": {
63686
+ "package": "himalaya",
63687
+ "type": "Text",
63688
+ "props": {
63689
+ "text": "$item.timeLabel",
63690
+ "style": "footnote",
63691
+ "monospacedDigits": true
63692
+ }
63693
+ }
63694
+ },
63695
+ {
63696
+ "id": "",
63697
+ "body": {
63698
+ "package": "himalaya",
63699
+ "type": "Text",
63700
+ "props": {
63701
+ "text": "$item.name",
63702
+ "style": "caption",
63703
+ "color": "textSecondary",
63704
+ "maxLines": 1
63705
+ }
63706
+ }
63707
+ }
63708
+ ]
63709
+ }
63710
+ }
63711
+ }
63712
+ ]
63713
+ }
63714
+ }
63715
+ }
63716
+ ]
63717
+ }
63718
+ },
63719
+ "modifiers": {
63720
+ "padding": {
63721
+ "leading": 6,
63722
+ "trailing": 6,
63723
+ "top": 4,
63724
+ "bottom": 8
63725
+ }
63726
+ }
63727
+ },
63728
+ "logicBundle": {
63729
+ "url": "http://localhost:8190/v1/bundles/himi-owner-lite-wrist",
63730
+ "integrity": "",
63731
+ "contentType": "application/javascript+ts-bundle",
63732
+ "declaredCapabilities": [
63733
+ "wix_api"
63734
+ ],
63735
+ "minBinaryVersion": "0.1.0",
63736
+ "bundleVersion": "0.0.1"
63737
+ }
63738
+ },
63739
+ "himi_owner_lite_wrist_request": {
63740
+ "screenId": "himi_owner_lite_wrist_request",
63741
+ "renderer": "sdui_intent",
63742
+ "title": "Booking requests",
63743
+ "schemaVersion": 1,
63744
+ "cacheControl": {
63745
+ "maxAge": 0,
63746
+ "staleWhileRevalidate": 0
63747
+ },
63748
+ "telemetryScreenName": "himi_owner_lite_wrist_request",
63749
+ "payload": {
63750
+ "id": "himi_owner_lite_wrist_request.root",
63751
+ "body": {
63752
+ "package": "himalaya",
63753
+ "type": "VStack",
63754
+ "props": {
63755
+ "spacing": 6,
63756
+ "alignment": "leading",
63757
+ "children": [
63758
+ {
63759
+ "id": "wrist.request.position",
63760
+ "body": {
63761
+ "package": "himalaya",
63762
+ "type": "Text",
63763
+ "props": {
63764
+ "text": "$service:ownerWrist.requestPosition",
63765
+ "style": "caption",
63766
+ "color": "textSecondary"
63767
+ }
63768
+ }
63769
+ },
63770
+ {
63771
+ "id": "wrist.request.message",
63772
+ "body": {
63773
+ "package": "himalaya",
63774
+ "type": "Text",
63775
+ "props": {
63776
+ "text": "$service:ownerWrist.statusMessage",
63777
+ "style": "footnote",
63778
+ "color": "textSecondary",
63779
+ "maxLines": 3,
63780
+ "collapseWhenEmpty": true
63781
+ }
63782
+ }
63783
+ },
63784
+ {
63785
+ "id": "wrist.request.name",
63786
+ "body": {
63787
+ "package": "himalaya",
63788
+ "type": "Text",
63789
+ "props": {
63790
+ "text": "$service:ownerWrist.current.name",
63791
+ "style": "bodyEmphasis",
63792
+ "maxLines": 1
63793
+ }
63794
+ }
63795
+ },
63796
+ {
63797
+ "id": "wrist.request.service",
63798
+ "body": {
63799
+ "package": "himalaya",
63800
+ "type": "Text",
63801
+ "props": {
63802
+ "text": "$service:ownerWrist.current.service",
63803
+ "style": "footnote",
63804
+ "maxLines": 1
63805
+ }
63806
+ }
63807
+ },
63808
+ {
63809
+ "id": "wrist.request.when",
63810
+ "body": {
63811
+ "package": "himalaya",
63812
+ "type": "Text",
63813
+ "props": {
63814
+ "text": "$service:ownerWrist.current.dayLabel",
63815
+ "style": "footnote"
63816
+ }
63817
+ }
63818
+ },
63819
+ {
63820
+ "id": "wrist.request.error",
63821
+ "body": {
63822
+ "package": "himalaya",
63823
+ "type": "Text",
63824
+ "props": {
63825
+ "text": "$service:ownerWrist.actionError",
63826
+ "style": "caption",
63827
+ "color": "danger",
63828
+ "maxLines": 3,
63829
+ "collapseWhenEmpty": true
63830
+ }
63831
+ }
63832
+ },
63833
+ {
63834
+ "id": "",
63835
+ "body": {
63836
+ "package": "himalaya",
63837
+ "type": "VStack",
63838
+ "props": {
63839
+ "spacing": 6,
63840
+ "alignment": "leading",
63841
+ "children": [
63842
+ {
63843
+ "id": "wrist.request.accept",
63844
+ "body": {
63845
+ "package": "himalaya",
63846
+ "type": "Button",
63847
+ "props": {
63848
+ "title": "Accept",
63849
+ "style": "primary",
63850
+ "fullWidth": true,
63851
+ "action": {
63852
+ "actionId": "tier5.ownerWrist.confirm",
63853
+ "params": {
63854
+ "bookingId": "$service:ownerWrist.current.bookingId",
63855
+ "siteId": "$service:ownerWrist.siteId"
63856
+ }
63857
+ }
63858
+ }
63859
+ }
63860
+ },
63861
+ {
63862
+ "id": "wrist.request.decline",
63863
+ "body": {
63864
+ "package": "himalaya",
63865
+ "type": "Button",
63866
+ "props": {
63867
+ "title": "Decline",
63868
+ "style": "secondary",
63869
+ "role": "destructive",
63870
+ "fullWidth": true,
63871
+ "action": {
63872
+ "actionId": "tier5.ownerWrist.askDecline"
63873
+ }
63874
+ }
63875
+ }
63876
+ }
63877
+ ]
63878
+ }
63879
+ },
63880
+ "modifiers": {
63881
+ "hiddenPath": "$service:ownerWrist.confirmingDecline"
63882
+ }
63883
+ },
63884
+ {
63885
+ "id": "",
63886
+ "body": {
63887
+ "package": "himalaya",
63888
+ "type": "VStack",
63889
+ "props": {
63890
+ "spacing": 6,
63891
+ "alignment": "leading",
63892
+ "children": [
63893
+ {
63894
+ "id": "wrist.request.confirm.prompt",
63895
+ "body": {
63896
+ "package": "himalaya",
63897
+ "type": "Text",
63898
+ "props": {
63899
+ "text": "Decline this request?",
63900
+ "style": "footnote"
63901
+ }
63902
+ }
63903
+ },
63904
+ {
63905
+ "id": "wrist.request.confirm.decline",
63906
+ "body": {
63907
+ "package": "himalaya",
63908
+ "type": "Button",
63909
+ "props": {
63910
+ "title": "Decline",
63911
+ "style": "primary",
63912
+ "role": "destructive",
63913
+ "fullWidth": true,
63914
+ "action": {
63915
+ "actionId": "tier5.ownerWrist.decline",
63916
+ "params": {
63917
+ "bookingId": "$service:ownerWrist.current.bookingId",
63918
+ "siteId": "$service:ownerWrist.siteId"
63919
+ }
63920
+ }
63921
+ }
63922
+ }
63923
+ },
63924
+ {
63925
+ "id": "wrist.request.confirm.keep",
63926
+ "body": {
63927
+ "package": "himalaya",
63928
+ "type": "Button",
63929
+ "props": {
63930
+ "title": "Keep",
63931
+ "style": "secondary",
63932
+ "fullWidth": true,
63933
+ "action": {
63934
+ "actionId": "tier5.ownerWrist.cancelDecline"
63935
+ }
63936
+ }
63937
+ }
63938
+ }
63939
+ ]
63940
+ }
63941
+ },
63942
+ "modifiers": {
63943
+ "hiddenPath": "$service:ownerWrist.notConfirmingDecline"
63944
+ }
63945
+ },
63946
+ {
63947
+ "id": "wrist.request.back",
63948
+ "body": {
63949
+ "package": "himalaya",
63950
+ "type": "Button",
63951
+ "props": {
63952
+ "title": "Back",
63953
+ "style": "plain",
63954
+ "fullWidth": true,
63955
+ "action": {
63956
+ "actionId": "companion.ownerLite.backHome"
63957
+ }
63958
+ }
63959
+ }
63960
+ }
63961
+ ]
63962
+ }
63963
+ },
63964
+ "modifiers": {
63965
+ "padding": {
63966
+ "leading": 6,
63967
+ "trailing": 6,
63968
+ "top": 4,
63969
+ "bottom": 8
63970
+ }
63971
+ }
63972
+ },
63973
+ "logicBundle": {
63974
+ "url": "http://localhost:8190/v1/bundles/himi-owner-lite-wrist",
63975
+ "integrity": "",
63976
+ "contentType": "application/javascript+ts-bundle",
63977
+ "declaredCapabilities": [
63978
+ "wix_api"
63979
+ ],
63980
+ "minBinaryVersion": "0.1.0",
63981
+ "bundleVersion": "0.0.1"
63982
+ }
63983
+ },
63444
63984
  "himi_owner_lite_events": {
63445
63985
  "screenId": "himi_owner_lite_events",
63446
63986
  "renderer": "sdui_intent",
@@ -153,6 +153,12 @@
153
153
  },
154
154
  "himi_owner_lite_sites": {
155
155
  "displayName": "Sites"
156
+ },
157
+ "himi_owner_lite_wrist_home": {
158
+ "displayName": "Next up"
159
+ },
160
+ "himi_owner_lite_wrist_request": {
161
+ "displayName": "Booking requests"
156
162
  }
157
163
  },
158
164
  "icon": "icon.png",
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "web": true,
3
- "macos": true
3
+ "macos": true,
4
+ "watchos": true
4
5
  }