@synopackageland/sdk 0.10.6 → 0.10.7

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.
package/README.md CHANGED
@@ -37,6 +37,11 @@ Its `messages` are `portalMessages(locale)`, the panel text from
37
37
  In `PortalSettings`, enabling the entry also applies the default alias, so one
38
38
  action makes the App reachable; an alias DSM refuses leaves the registered
39
39
  entry and the alias form to choose another.
40
+ The access reads the status once when it is created and keeps the newest one
41
+ it read (`lastStatus()`); `PortalSettings` starts from it, so a settings page
42
+ opened later shows the section as it is instead of placeholder rows that the
43
+ status then replaces. An access without `lastStatus` (an older CLI) keeps the
44
+ placeholder.
40
45
 
41
46
  ## Full page
42
47
 
@@ -301,7 +306,10 @@ DSM window's `executor_starting`) and returns `'stopped'`, `'starting'` or
301
306
  `undefined`. `lifecycleCopy(lifecycle, locale)` is the text the SDK's panels
302
307
  show then (9 locales). Such a package answers again by itself: show the text
303
308
  as information, not as an error, and read again after
304
- `lifecycleRetryDelay(attempt)` (2 s, doubling to `LIFECYCLE_RETRY_MAX_MS`).
309
+ `lifecycleRetryDelay(attempt, lifecycle)`: 2 s, doubling to
310
+ `LIFECYCLE_RETRY_MAX_MS` (15 s) while stopped and to
311
+ `LIFECYCLE_STARTING_RETRY_MAX_MS` (4 s) while starting. Start `attempt` over
312
+ at 0 when the lifecycle changes, so a start is seen soon after it ends.
305
313
 
306
314
  ```ts
307
315
  import {appLifecycle, lifecycleCopy} from '@synopackageland/sdk'
@@ -312,6 +320,25 @@ try { jobs = await ctx.call('jobs.list') } catch (error) {
312
320
  }
313
321
  ```
314
322
 
323
+ Pick the text by what happens next:
324
+
325
+ | The refusal came from | Use | Says (zh-TW) |
326
+ |---|---|---|
327
+ | A read the view repeats on its own (a list, a status), as above | `lifecycleCopy(lifecycle, locale)` (`for: 'page'`, the default) | 此 App 已停止。請在套件中心啟動,啟動後此頁面會自動更新。 |
328
+ | An action the user started (submit, save, delete) that nothing sends again | `lifecycleCopy(lifecycle, locale, {for: 'action'})` | 此 App 已停止。請在套件中心啟動後再試一次。 |
329
+
330
+ The page text promises that the page updates by itself, so use it only where
331
+ the view polls again. A refused action keeps its input (the link stays in
332
+ the dialog) and says to try again:
333
+
334
+ ```ts
335
+ try { await ctx.call('downloads.add', {url}) } catch (error) {
336
+ const lifecycle = appLifecycle(error)
337
+ if (lifecycle) dialogError = lifecycleCopy(lifecycle, ctx.locale, {for: 'action'})
338
+ else throw error
339
+ }
340
+ ```
341
+
315
342
  The Vue entry needs the peer dependencies `vue`, `@synopackageland/ui` and
316
343
  `@lucide/vue`. The headless entry needs none.
317
344
 
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "Genehmigen",
20
20
  "appStopped": "Diese App ist angehalten. Starten Sie sie im Paket-Zentrum; danach wird diese Seite automatisch aktualisiert.",
21
21
  "appStarting": "Diese App wird gestartet. Diese Seite wird gleich automatisch aktualisiert.",
22
+ "appStoppedAction": "Diese App ist angehalten. Starten Sie sie im Paket-Zentrum und versuchen Sie es dann erneut.",
23
+ "appStartingAction": "Diese App wird gestartet. Warten Sie einen Moment und versuchen Sie es dann erneut.",
22
24
  "loading": "Wird geladen…",
23
25
  "details": "Details",
24
26
  "revoke": "Widerrufen",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "Approve",
20
20
  "appStopped": "This app is stopped. Start it in Package Center; this page updates by itself once it runs.",
21
21
  "appStarting": "This app is starting. This page updates by itself in a moment.",
22
+ "appStoppedAction": "This app is stopped. Start it in Package Center, then try again.",
23
+ "appStartingAction": "This app is starting. Wait a moment, then try again.",
22
24
  "loading": "Loading…",
23
25
  "details": "Details",
24
26
  "revoke": "Revoke",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "Aprobar",
20
20
  "appStopped": "Esta aplicación está detenida. Iníciela en el Centro de paquetes; después, esta página se actualizará automáticamente.",
21
21
  "appStarting": "Esta aplicación se está iniciando. Esta página se actualizará automáticamente en un momento.",
22
+ "appStoppedAction": "Esta aplicación está detenida. Iníciela en el Centro de paquetes y vuelva a intentarlo.",
23
+ "appStartingAction": "Esta aplicación se está iniciando. Espere un momento y vuelva a intentarlo.",
22
24
  "loading": "Cargando…",
23
25
  "details": "Detalles",
24
26
  "revoke": "Revocar",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "Approuver",
20
20
  "appStopped": "Cette application est arrêtée. Démarrez-la dans le Centre de paquets ; cette page se met ensuite à jour automatiquement.",
21
21
  "appStarting": "Cette application démarre. Cette page se met à jour automatiquement dans un instant.",
22
+ "appStoppedAction": "Cette application est arrêtée. Démarrez-la dans le Centre de paquets, puis réessayez.",
23
+ "appStartingAction": "Cette application démarre. Patientez un instant, puis réessayez.",
22
24
  "loading": "Chargement…",
23
25
  "details": "Détails",
24
26
  "revoke": "Révoquer",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "Approva",
20
20
  "appStopped": "Questa app è arrestata. Avviarla in Centro pacchetti; poi questa pagina si aggiornerà automaticamente.",
21
21
  "appStarting": "Questa app è in fase di avvio. Questa pagina si aggiornerà automaticamente tra poco.",
22
+ "appStoppedAction": "Questa app è arrestata. Avviarla in Centro pacchetti, quindi riprovare.",
23
+ "appStartingAction": "Questa app è in fase di avvio. Attendere un momento, quindi riprovare.",
22
24
  "loading": "Caricamento…",
23
25
  "details": "Dettagli",
24
26
  "revoke": "Revoca",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "承認",
20
20
  "appStopped": "このアプリは停止しています。パッケージ センターで起動してください。起動すると、このページは自動的に更新されます。",
21
21
  "appStarting": "このアプリは起動中です。まもなくこのページは自動的に更新されます。",
22
+ "appStoppedAction": "このアプリは停止しています。パッケージ センターで起動してから、もう一度お試しください。",
23
+ "appStartingAction": "このアプリは起動中です。しばらく待ってから、もう一度お試しください。",
22
24
  "loading": "読み込み中…",
23
25
  "details": "詳細",
24
26
  "revoke": "取り消す",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "승인",
20
20
  "appStopped": "이 앱이 중지되었습니다. 패키지 센터에서 시작하십시오. 시작되면 이 페이지가 자동으로 업데이트됩니다.",
21
21
  "appStarting": "이 앱을 시작하는 중입니다. 잠시 후 이 페이지가 자동으로 업데이트됩니다.",
22
+ "appStoppedAction": "이 앱이 중지되었습니다. 패키지 센터에서 시작한 후 다시 시도하십시오.",
23
+ "appStartingAction": "이 앱을 시작하는 중입니다. 잠시 후 다시 시도하십시오.",
22
24
  "loading": "불러오는 중…",
23
25
  "details": "세부 사항",
24
26
  "revoke": "취소",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "批准",
20
20
  "appStopped": "此 App 已停止。请在套件中心启动,启动后此页面会自动更新。",
21
21
  "appStarting": "此 App 正在启动,此页面稍后会自动更新。",
22
+ "appStoppedAction": "此 App 已停止。请在套件中心启动后再试一次。",
23
+ "appStartingAction": "此 App 正在启动,请稍候再试一次。",
22
24
  "loading": "正在加载…",
23
25
  "details": "详情",
24
26
  "revoke": "撤销",
@@ -19,6 +19,8 @@
19
19
  "noticeApprove": "核准",
20
20
  "appStopped": "此 App 已停止。請在套件中心啟動,啟動後此頁面會自動更新。",
21
21
  "appStarting": "此 App 正在啟動,此頁面稍後會自動更新。",
22
+ "appStoppedAction": "此 App 已停止。請在套件中心啟動後再試一次。",
23
+ "appStartingAction": "此 App 正在啟動,請稍候再試一次。",
22
24
  "loading": "載入中…",
23
25
  "details": "詳情",
24
26
  "revoke": "撤銷",