Play edits under a machine-wide per-package lock (parallel reads of one app no longer delete each other's edits; a read whose edit was deleted is redone once, writes are not); a store that failed to read is 'Couldn't read Google Play' and keeps its last good releases with 'couldn't refresh'; stores on different versions: neutral 'Current · Play x · App Store y' header and each lane its own state, 'Not on this store' only without a record; Play status decided from the public store page's live version (Live / In review / In review (live: x) / managed publishing / Rolling out / Halted / Draft; only a network failure says 'Couldn't check the store page', with the last known answer and its time); tests/play-edit-lock.test.ts, recorded page fixture, boot check auto-read cases (pitfall 58)
This commit is contained in:
parent
e59f439101
commit
714352ec18
24 changed files with 570 additions and 103 deletions
|
|
@ -159,9 +159,9 @@ export interface AppIdentity {
|
|||
}
|
||||
|
||||
/** Where a version is on one store. */
|
||||
/** `sent`: a Google Play production release that is completed in the API while the public store page is 404 (sent to
|
||||
* Google, in review or not yet published). `released`: completed in production and the app is public, but this
|
||||
* version is not proven live (an update Google may still be reviewing, or the public page could not be read). */
|
||||
/** Google Play production (completed in the API) is decided by the public store page: its version = `live`, 404 or an
|
||||
* older live version = `review` (with `liveVersion` / `managed`), page never read (network) = `released` with
|
||||
* publicPage unknown ("Couldn't check the store page"). `sent` is no longer produced (older cached reads). */
|
||||
export type ReleasePhase = 'live' | 'rollout' | 'halted' | 'released' | 'approved' | 'review' | 'sent' | 'rejected' | 'testing' | 'draft' | 'other';
|
||||
|
||||
export interface StoreRelease {
|
||||
|
|
@ -180,6 +180,12 @@ export interface StoreRelease {
|
|||
phased?: { state: string; day: number | null } | null;
|
||||
/** Google Play production: the public store page (public = 200, notPublic = 404, unknown = not read). */
|
||||
publicPage?: 'public' | 'notPublic' | 'unknown';
|
||||
/** Google Play production in review while the store page shows an older live version: that version. */
|
||||
liveVersion?: string | null;
|
||||
/** Google Play production in review with managed publishing on (play.managedPublishing): approval is not readable. */
|
||||
managed?: boolean;
|
||||
/** The store page could not be read now: the phase is from the last known page read at this time. */
|
||||
pageStaleAt?: string | null;
|
||||
/** When the store record was made (iOS version createdDate), if the store says. */
|
||||
date?: string | null;
|
||||
}
|
||||
|
|
@ -216,6 +222,8 @@ export interface AppStatus {
|
|||
virtual?: boolean;
|
||||
/** live only: per-platform read errors ("unknown, never false"). */
|
||||
storeErrors: { ios?: string; android?: string };
|
||||
/** A store that could not be read this time, shown from the last good read (its time): couldn't refresh. */
|
||||
staleStores?: { ios?: string; android?: string };
|
||||
errors: string[];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue