@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": [
@@ -63880,6 +63880,546 @@ const SCREENS = runtimeSetting({
63880
63880
  "bundleVersion": "0.0.1"
63881
63881
  }
63882
63882
  },
63883
+ "himi_owner_lite_wrist_home": {
63884
+ "screenId": "himi_owner_lite_wrist_home",
63885
+ "renderer": "sdui_intent",
63886
+ "title": "Next up",
63887
+ "schemaVersion": 1,
63888
+ "cacheControl": {
63889
+ "maxAge": 0,
63890
+ "staleWhileRevalidate": 0
63891
+ },
63892
+ "telemetryScreenName": "himi_owner_lite_wrist_home",
63893
+ "payload": {
63894
+ "id": "himi_owner_lite_wrist_home.root",
63895
+ "body": {
63896
+ "package": "himalaya",
63897
+ "type": "VStack",
63898
+ "props": {
63899
+ "spacing": 8,
63900
+ "alignment": "leading",
63901
+ "children": [
63902
+ {
63903
+ "id": "wrist.site",
63904
+ "body": {
63905
+ "package": "himalaya",
63906
+ "type": "Text",
63907
+ "props": {
63908
+ "text": "$service:ownerWrist.siteName",
63909
+ "style": "caption",
63910
+ "color": "textSecondary",
63911
+ "maxLines": 1,
63912
+ "collapseWhenEmpty": true
63913
+ }
63914
+ }
63915
+ },
63916
+ {
63917
+ "id": "wrist.home.message",
63918
+ "body": {
63919
+ "package": "himalaya",
63920
+ "type": "Text",
63921
+ "props": {
63922
+ "text": "$service:ownerWrist.message",
63923
+ "style": "footnote",
63924
+ "color": "textSecondary",
63925
+ "maxLines": 3,
63926
+ "collapseWhenEmpty": true
63927
+ }
63928
+ }
63929
+ },
63930
+ {
63931
+ "id": "wrist.home.error",
63932
+ "body": {
63933
+ "package": "himalaya",
63934
+ "type": "Text",
63935
+ "props": {
63936
+ "text": "$service:ownerWrist.actionError",
63937
+ "style": "caption",
63938
+ "color": "danger",
63939
+ "maxLines": 3,
63940
+ "collapseWhenEmpty": true
63941
+ }
63942
+ }
63943
+ },
63944
+ {
63945
+ "id": "",
63946
+ "body": {
63947
+ "package": "himalaya",
63948
+ "type": "VStack",
63949
+ "props": {
63950
+ "spacing": 2,
63951
+ "alignment": "leading",
63952
+ "children": [
63953
+ {
63954
+ "id": "wrist.next.label",
63955
+ "body": {
63956
+ "package": "himalaya",
63957
+ "type": "Text",
63958
+ "props": {
63959
+ "text": "Next up",
63960
+ "style": "caption",
63961
+ "color": "textSecondary"
63962
+ }
63963
+ }
63964
+ },
63965
+ {
63966
+ "id": "wrist.next.countdown",
63967
+ "body": {
63968
+ "package": "himalaya",
63969
+ "type": "Text",
63970
+ "props": {
63971
+ "text": "$service:ownerWrist.nextUp.countdown",
63972
+ "style": "title1",
63973
+ "monospacedDigits": true
63974
+ }
63975
+ }
63976
+ },
63977
+ {
63978
+ "id": "wrist.next.name",
63979
+ "body": {
63980
+ "package": "himalaya",
63981
+ "type": "Text",
63982
+ "props": {
63983
+ "text": "$service:ownerWrist.nextUp.name",
63984
+ "style": "bodyEmphasis",
63985
+ "maxLines": 1
63986
+ }
63987
+ }
63988
+ },
63989
+ {
63990
+ "id": "wrist.next.service",
63991
+ "body": {
63992
+ "package": "himalaya",
63993
+ "type": "Text",
63994
+ "props": {
63995
+ "text": "$service:ownerWrist.nextUp.service",
63996
+ "style": "footnote",
63997
+ "maxLines": 1
63998
+ }
63999
+ }
64000
+ },
64001
+ {
64002
+ "id": "wrist.next.range",
64003
+ "body": {
64004
+ "package": "himalaya",
64005
+ "type": "Text",
64006
+ "props": {
64007
+ "text": "$service:ownerWrist.nextUp.rangeLabel",
64008
+ "style": "caption",
64009
+ "color": "textSecondary"
64010
+ }
64011
+ }
64012
+ }
64013
+ ]
64014
+ }
64015
+ },
64016
+ "modifiers": {
64017
+ "hiddenPath": "$service:ownerWrist.doneToday"
64018
+ }
64019
+ },
64020
+ {
64021
+ "id": "",
64022
+ "body": {
64023
+ "package": "himalaya",
64024
+ "type": "VStack",
64025
+ "props": {
64026
+ "spacing": 2,
64027
+ "alignment": "leading",
64028
+ "children": [
64029
+ {
64030
+ "id": "wrist.tomorrow.label",
64031
+ "body": {
64032
+ "package": "himalaya",
64033
+ "type": "Text",
64034
+ "props": {
64035
+ "text": "$service:ownerWrist.tomorrowFirst.whenLabel",
64036
+ "style": "caption",
64037
+ "color": "textSecondary"
64038
+ }
64039
+ }
64040
+ },
64041
+ {
64042
+ "id": "wrist.tomorrow.time",
64043
+ "body": {
64044
+ "package": "himalaya",
64045
+ "type": "Text",
64046
+ "props": {
64047
+ "text": "$service:ownerWrist.tomorrowFirst.timeLabel",
64048
+ "style": "bodyEmphasis"
64049
+ }
64050
+ }
64051
+ },
64052
+ {
64053
+ "id": "wrist.tomorrow.name",
64054
+ "body": {
64055
+ "package": "himalaya",
64056
+ "type": "Text",
64057
+ "props": {
64058
+ "text": "$service:ownerWrist.tomorrowFirst.name",
64059
+ "style": "footnote",
64060
+ "maxLines": 1
64061
+ }
64062
+ }
64063
+ }
64064
+ ]
64065
+ }
64066
+ },
64067
+ "modifiers": {
64068
+ "hiddenPath": "$service:ownerWrist.hideTomorrow"
64069
+ }
64070
+ },
64071
+ {
64072
+ "id": "wrist.requests.badge",
64073
+ "body": {
64074
+ "package": "himalaya",
64075
+ "type": "Button",
64076
+ "props": {
64077
+ "title": "$service:ownerWrist.requestBadge",
64078
+ "style": "primary",
64079
+ "fullWidth": true,
64080
+ "action": {
64081
+ "actionId": "companion.ownerLite.openRequests"
64082
+ }
64083
+ }
64084
+ },
64085
+ "modifiers": {
64086
+ "hiddenPath": "$service:ownerWrist.noRequests"
64087
+ }
64088
+ },
64089
+ {
64090
+ "id": "wrist.requests.none",
64091
+ "body": {
64092
+ "package": "himalaya",
64093
+ "type": "Text",
64094
+ "props": {
64095
+ "text": "No requests waiting",
64096
+ "style": "caption",
64097
+ "color": "textSecondary"
64098
+ }
64099
+ },
64100
+ "modifiers": {
64101
+ "hiddenPath": "$service:ownerWrist.hideNoRequests"
64102
+ }
64103
+ },
64104
+ {
64105
+ "id": "wrist.later",
64106
+ "body": {
64107
+ "package": "himalaya",
64108
+ "type": "LazyList",
64109
+ "props": {
64110
+ "spacing": 4,
64111
+ "itemsPath": "$service:ownerWrist.later",
64112
+ "items": [
64113
+ {
64114
+ "id": "",
64115
+ "body": {
64116
+ "package": "himalaya",
64117
+ "type": "VStack",
64118
+ "props": {
64119
+ "spacing": 0,
64120
+ "alignment": "leading",
64121
+ "children": [
64122
+ {
64123
+ "id": "",
64124
+ "body": {
64125
+ "package": "himalaya",
64126
+ "type": "Text",
64127
+ "props": {
64128
+ "text": "$item.timeLabel",
64129
+ "style": "footnote",
64130
+ "monospacedDigits": true
64131
+ }
64132
+ }
64133
+ },
64134
+ {
64135
+ "id": "",
64136
+ "body": {
64137
+ "package": "himalaya",
64138
+ "type": "Text",
64139
+ "props": {
64140
+ "text": "$item.name",
64141
+ "style": "caption",
64142
+ "color": "textSecondary",
64143
+ "maxLines": 1
64144
+ }
64145
+ }
64146
+ }
64147
+ ]
64148
+ }
64149
+ }
64150
+ }
64151
+ ]
64152
+ }
64153
+ }
64154
+ }
64155
+ ]
64156
+ }
64157
+ },
64158
+ "modifiers": {
64159
+ "padding": {
64160
+ "leading": 6,
64161
+ "trailing": 6,
64162
+ "top": 4,
64163
+ "bottom": 8
64164
+ }
64165
+ }
64166
+ },
64167
+ "logicBundle": {
64168
+ "url": "http://localhost:8190/v1/bundles/himi-owner-lite-wrist",
64169
+ "integrity": "",
64170
+ "contentType": "application/javascript+ts-bundle",
64171
+ "declaredCapabilities": [
64172
+ "wix_api"
64173
+ ],
64174
+ "minBinaryVersion": "0.1.0",
64175
+ "bundleVersion": "0.0.1"
64176
+ }
64177
+ },
64178
+ "himi_owner_lite_wrist_request": {
64179
+ "screenId": "himi_owner_lite_wrist_request",
64180
+ "renderer": "sdui_intent",
64181
+ "title": "Booking requests",
64182
+ "schemaVersion": 1,
64183
+ "cacheControl": {
64184
+ "maxAge": 0,
64185
+ "staleWhileRevalidate": 0
64186
+ },
64187
+ "telemetryScreenName": "himi_owner_lite_wrist_request",
64188
+ "payload": {
64189
+ "id": "himi_owner_lite_wrist_request.root",
64190
+ "body": {
64191
+ "package": "himalaya",
64192
+ "type": "VStack",
64193
+ "props": {
64194
+ "spacing": 6,
64195
+ "alignment": "leading",
64196
+ "children": [
64197
+ {
64198
+ "id": "wrist.request.position",
64199
+ "body": {
64200
+ "package": "himalaya",
64201
+ "type": "Text",
64202
+ "props": {
64203
+ "text": "$service:ownerWrist.requestPosition",
64204
+ "style": "caption",
64205
+ "color": "textSecondary"
64206
+ }
64207
+ }
64208
+ },
64209
+ {
64210
+ "id": "wrist.request.message",
64211
+ "body": {
64212
+ "package": "himalaya",
64213
+ "type": "Text",
64214
+ "props": {
64215
+ "text": "$service:ownerWrist.statusMessage",
64216
+ "style": "footnote",
64217
+ "color": "textSecondary",
64218
+ "maxLines": 3,
64219
+ "collapseWhenEmpty": true
64220
+ }
64221
+ }
64222
+ },
64223
+ {
64224
+ "id": "wrist.request.name",
64225
+ "body": {
64226
+ "package": "himalaya",
64227
+ "type": "Text",
64228
+ "props": {
64229
+ "text": "$service:ownerWrist.current.name",
64230
+ "style": "bodyEmphasis",
64231
+ "maxLines": 1
64232
+ }
64233
+ }
64234
+ },
64235
+ {
64236
+ "id": "wrist.request.service",
64237
+ "body": {
64238
+ "package": "himalaya",
64239
+ "type": "Text",
64240
+ "props": {
64241
+ "text": "$service:ownerWrist.current.service",
64242
+ "style": "footnote",
64243
+ "maxLines": 1
64244
+ }
64245
+ }
64246
+ },
64247
+ {
64248
+ "id": "wrist.request.when",
64249
+ "body": {
64250
+ "package": "himalaya",
64251
+ "type": "Text",
64252
+ "props": {
64253
+ "text": "$service:ownerWrist.current.dayLabel",
64254
+ "style": "footnote"
64255
+ }
64256
+ }
64257
+ },
64258
+ {
64259
+ "id": "wrist.request.error",
64260
+ "body": {
64261
+ "package": "himalaya",
64262
+ "type": "Text",
64263
+ "props": {
64264
+ "text": "$service:ownerWrist.actionError",
64265
+ "style": "caption",
64266
+ "color": "danger",
64267
+ "maxLines": 3,
64268
+ "collapseWhenEmpty": true
64269
+ }
64270
+ }
64271
+ },
64272
+ {
64273
+ "id": "",
64274
+ "body": {
64275
+ "package": "himalaya",
64276
+ "type": "VStack",
64277
+ "props": {
64278
+ "spacing": 6,
64279
+ "alignment": "leading",
64280
+ "children": [
64281
+ {
64282
+ "id": "wrist.request.accept",
64283
+ "body": {
64284
+ "package": "himalaya",
64285
+ "type": "Button",
64286
+ "props": {
64287
+ "title": "Accept",
64288
+ "style": "primary",
64289
+ "fullWidth": true,
64290
+ "action": {
64291
+ "actionId": "tier5.ownerWrist.confirm",
64292
+ "params": {
64293
+ "bookingId": "$service:ownerWrist.current.bookingId",
64294
+ "siteId": "$service:ownerWrist.siteId"
64295
+ }
64296
+ }
64297
+ }
64298
+ }
64299
+ },
64300
+ {
64301
+ "id": "wrist.request.decline",
64302
+ "body": {
64303
+ "package": "himalaya",
64304
+ "type": "Button",
64305
+ "props": {
64306
+ "title": "Decline",
64307
+ "style": "secondary",
64308
+ "role": "destructive",
64309
+ "fullWidth": true,
64310
+ "action": {
64311
+ "actionId": "tier5.ownerWrist.askDecline"
64312
+ }
64313
+ }
64314
+ }
64315
+ }
64316
+ ]
64317
+ }
64318
+ },
64319
+ "modifiers": {
64320
+ "hiddenPath": "$service:ownerWrist.confirmingDecline"
64321
+ }
64322
+ },
64323
+ {
64324
+ "id": "",
64325
+ "body": {
64326
+ "package": "himalaya",
64327
+ "type": "VStack",
64328
+ "props": {
64329
+ "spacing": 6,
64330
+ "alignment": "leading",
64331
+ "children": [
64332
+ {
64333
+ "id": "wrist.request.confirm.prompt",
64334
+ "body": {
64335
+ "package": "himalaya",
64336
+ "type": "Text",
64337
+ "props": {
64338
+ "text": "Decline this request?",
64339
+ "style": "footnote"
64340
+ }
64341
+ }
64342
+ },
64343
+ {
64344
+ "id": "wrist.request.confirm.decline",
64345
+ "body": {
64346
+ "package": "himalaya",
64347
+ "type": "Button",
64348
+ "props": {
64349
+ "title": "Decline",
64350
+ "style": "primary",
64351
+ "role": "destructive",
64352
+ "fullWidth": true,
64353
+ "action": {
64354
+ "actionId": "tier5.ownerWrist.decline",
64355
+ "params": {
64356
+ "bookingId": "$service:ownerWrist.current.bookingId",
64357
+ "siteId": "$service:ownerWrist.siteId"
64358
+ }
64359
+ }
64360
+ }
64361
+ }
64362
+ },
64363
+ {
64364
+ "id": "wrist.request.confirm.keep",
64365
+ "body": {
64366
+ "package": "himalaya",
64367
+ "type": "Button",
64368
+ "props": {
64369
+ "title": "Keep",
64370
+ "style": "secondary",
64371
+ "fullWidth": true,
64372
+ "action": {
64373
+ "actionId": "tier5.ownerWrist.cancelDecline"
64374
+ }
64375
+ }
64376
+ }
64377
+ }
64378
+ ]
64379
+ }
64380
+ },
64381
+ "modifiers": {
64382
+ "hiddenPath": "$service:ownerWrist.notConfirmingDecline"
64383
+ }
64384
+ },
64385
+ {
64386
+ "id": "wrist.request.back",
64387
+ "body": {
64388
+ "package": "himalaya",
64389
+ "type": "Button",
64390
+ "props": {
64391
+ "title": "Back",
64392
+ "style": "plain",
64393
+ "fullWidth": true,
64394
+ "action": {
64395
+ "actionId": "companion.ownerLite.backHome"
64396
+ }
64397
+ }
64398
+ }
64399
+ }
64400
+ ]
64401
+ }
64402
+ },
64403
+ "modifiers": {
64404
+ "padding": {
64405
+ "leading": 6,
64406
+ "trailing": 6,
64407
+ "top": 4,
64408
+ "bottom": 8
64409
+ }
64410
+ }
64411
+ },
64412
+ "logicBundle": {
64413
+ "url": "http://localhost:8190/v1/bundles/himi-owner-lite-wrist",
64414
+ "integrity": "",
64415
+ "contentType": "application/javascript+ts-bundle",
64416
+ "declaredCapabilities": [
64417
+ "wix_api"
64418
+ ],
64419
+ "minBinaryVersion": "0.1.0",
64420
+ "bundleVersion": "0.0.1"
64421
+ }
64422
+ },
63883
64423
  "himi_owner_lite_products": {
63884
64424
  "screenId": "himi_owner_lite_products",
63885
64425
  "renderer": "sdui_intent",
@@ -186,6 +186,12 @@
186
186
  },
187
187
  "himi_owner_lite_sites": {
188
188
  "displayName": "Sites"
189
+ },
190
+ "himi_owner_lite_wrist_home": {
191
+ "displayName": "Next up"
192
+ },
193
+ "himi_owner_lite_wrist_request": {
194
+ "displayName": "Booking requests"
189
195
  }
190
196
  },
191
197
  "icon": "icon.png",
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "web": true,
3
- "macos": true
3
+ "macos": true,
4
+ "watchos": true
4
5
  }