@stapel/listings-react 0.20.0 → 0.22.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.
- package/CHANGELOG.md +75 -0
- package/dist/api/generated/schema.d.ts +125 -2
- package/dist/api/generated/schema.d.ts.map +1 -1
- package/dist/api/listingsApi.d.ts +20 -1
- package/dist/api/listingsApi.d.ts.map +1 -1
- package/dist/api/listingsApi.js +1 -0
- package/dist/api/listingsApi.js.map +1 -1
- package/dist/api/types.d.ts +32 -2
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js +7 -0
- package/dist/api/types.js.map +1 -1
- package/dist/default/ListingCard.d.ts +11 -0
- package/dist/default/ListingCard.d.ts.map +1 -1
- package/dist/default/ListingCard.js +86 -7
- package/dist/default/ListingCard.js.map +1 -1
- package/dist/default/ListingPhoto.d.ts +40 -0
- package/dist/default/ListingPhoto.d.ts.map +1 -1
- package/dist/default/ListingPhoto.js +53 -6
- package/dist/default/ListingPhoto.js.map +1 -1
- package/dist/default/ListingSerpCard.d.ts.map +1 -1
- package/dist/default/ListingSerpCard.js +14 -4
- package/dist/default/ListingSerpCard.js.map +1 -1
- package/dist/default/MyListingsPane.d.ts +19 -1
- package/dist/default/MyListingsPane.d.ts.map +1 -1
- package/dist/default/MyListingsPane.js +99 -12
- package/dist/default/MyListingsPane.js.map +1 -1
- package/dist/headless/ListingActions.d.ts +64 -13
- package/dist/headless/ListingActions.d.ts.map +1 -1
- package/dist/headless/ListingActions.js +60 -5
- package/dist/headless/ListingActions.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +8 -2
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/keys.d.ts +20 -0
- package/dist/i18n/keys.d.ts.map +1 -1
- package/dist/i18n/keys.js +52 -1
- package/dist/i18n/keys.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +12 -2
- package/dist/i18n/ru.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/model/mine.d.ts +20 -0
- package/dist/model/mine.d.ts.map +1 -1
- package/dist/model/mine.js +22 -0
- package/dist/model/mine.js.map +1 -1
- package/dist/model/mutations.d.ts +24 -1
- package/dist/model/mutations.d.ts.map +1 -1
- package/dist/model/mutations.js +28 -0
- package/dist/model/mutations.js.map +1 -1
- package/dist/model/status.d.ts.map +1 -1
- package/dist/model/status.js +26 -9
- package/dist/model/status.js.map +1 -1
- package/dist/model/transitions.d.ts +38 -1
- package/dist/model/transitions.d.ts.map +1 -1
- package/dist/model/transitions.js +73 -1
- package/dist/model/transitions.js.map +1 -1
- package/llms.txt +4 -2
- package/manifest.json +26 -2
- package/nav-manifest.json +1 -1
- package/package.json +5 -5
- package/src/analytics/generated/events.json +1 -1
- package/src/api/generated/schema.ts +125 -2
- package/src/api/listingsApi.ts +27 -0
- package/src/api/types.ts +47 -2
- package/src/default/ListingCard.tsx +115 -12
- package/src/default/ListingPhoto.tsx +102 -18
- package/src/default/ListingSerpCard.tsx +17 -4
- package/src/default/MyListingsPane.tsx +205 -39
- package/src/headless/ListingActions.tsx +137 -16
- package/src/i18n/es.ts +8 -2
- package/src/i18n/keys.ts +52 -1
- package/src/i18n/ru.ts +12 -2
- package/src/index.ts +19 -3
- package/src/model/mine.ts +23 -0
- package/src/model/mutations.ts +41 -0
- package/src/model/status.ts +27 -9
- package/src/model/transitions.ts +80 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* `<MyListingsPane>` — the seller's dashboard.
|
|
4
4
|
*
|
|
@@ -45,12 +45,12 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
45
45
|
*/
|
|
46
46
|
import { useState } from "react";
|
|
47
47
|
import { Flex, List, Tabs, Typography } from "antd";
|
|
48
|
-
import { ErrorAlert, EmptyState, GatedButton, SkinConfirm, SkinTheme, } from "@stapel/tokens-antd/skin";
|
|
49
|
-
import { matchList, matchLoad, useT, useTPlural } from "@stapel/core";
|
|
48
|
+
import { ErrorAlert, EmptyState, GatedButton, PaneGate, SkinConfirm, SkinTheme, } from "@stapel/tokens-antd/skin";
|
|
49
|
+
import { actionAvailable, matchList, matchLoad, useT, useTPlural } from "@stapel/core";
|
|
50
50
|
import { spacing } from "@stapel/tokens";
|
|
51
51
|
import { useMyListings } from "../headless/MyListings.js";
|
|
52
52
|
import { useListingActions } from "../headless/ListingActions.js";
|
|
53
|
-
import { myListingTitle } from "../model/mine.js";
|
|
53
|
+
import { myListingTitle, neverSubmitted } from "../model/mine.js";
|
|
54
54
|
import { listingStatusView } from "../model/status.js";
|
|
55
55
|
import { LISTINGS_I18N_KEYS } from "../i18n/keys.js";
|
|
56
56
|
import { ListingPhoto } from "./ListingPhoto.js";
|
|
@@ -75,9 +75,74 @@ const THUMB_WIDTH = "4.5rem";
|
|
|
75
75
|
* action buttons ~560px of empty space to split across, stranding the reason
|
|
76
76
|
* text between them. */
|
|
77
77
|
const MINE_MEASURE = "60rem";
|
|
78
|
+
/** The class a row's link to its own listing carries. */
|
|
79
|
+
const MINE_LINK_CLASS = "stapel-listings-mine-link";
|
|
80
|
+
/** The `href` the hoisted dashboard stylesheet is deduplicated by. */
|
|
81
|
+
const MINE_STYLE_HREF = "stapel-listings-mine";
|
|
82
|
+
/**
|
|
83
|
+
* The two rules an inline style cannot state: the focus ring
|
|
84
|
+
* (`:focus-visible`) and the fact that a row link is a HIT AREA rather than a
|
|
85
|
+
* link's look.
|
|
86
|
+
*
|
|
87
|
+
* `color: inherit` / `text-decoration: none`: the title is already a title and
|
|
88
|
+
* the thumbnail is already a picture — painting either link-blue would make a
|
|
89
|
+
* dashboard read as a list of hyperlinks instead of a list of listings. The
|
|
90
|
+
* ring is what keeps that honest for a keyboard: a target with no chrome must
|
|
91
|
+
* still say when it has focus.
|
|
92
|
+
*/
|
|
93
|
+
function myListingsCss() {
|
|
94
|
+
const link = `.${MINE_LINK_CLASS}`;
|
|
95
|
+
return [
|
|
96
|
+
`${link}{display:block;color:inherit;text-decoration:none;min-inline-size:0}`,
|
|
97
|
+
`${link}:hover{text-decoration:underline}`,
|
|
98
|
+
`${link}:focus-visible{outline:2px solid var(--stapel-focus-ring);` +
|
|
99
|
+
`outline-offset:2px;border-radius:4px}`,
|
|
100
|
+
].join("");
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The row's title and thumbnail, as a link to the listing's own page when the
|
|
104
|
+
* host has one.
|
|
105
|
+
*
|
|
106
|
+
* The gap this closes (D183): a live cabinet held ZERO `a[href^="/l/"]`. The
|
|
107
|
+
* title was bold text and the thumbnail was an image, so a seller could see
|
|
108
|
+
* their listing in the list and had no way at all to open it — the one
|
|
109
|
+
* natural move after publishing ("did that come out right?") had to be made
|
|
110
|
+
* by typing a URL. `<ListingCard>` has had this seam since it existed; the
|
|
111
|
+
* dashboard simply never took it.
|
|
112
|
+
*
|
|
113
|
+
* A row NOBODY HAS EVER PUBLISHED gets no link, and that is not a
|
|
114
|
+
* limitation. `title`/`price`/`images` are the PUBLISHED fields, so such a
|
|
115
|
+
* row's page is a blank one — a link to nothing is worse than the absence of
|
|
116
|
+
* a link, and Edit is the move that row actually wants. The predicate is the
|
|
117
|
+
* server's own (`neverSubmitted`: DRAFT and NOT_SUBMITTED), not "is this row
|
|
118
|
+
* showing its draft twin": the second answers `false` for a draft with no
|
|
119
|
+
* title at all, and a row reading "#623 · Draft" was handed a link to a
|
|
120
|
+
* page that does not exist.
|
|
121
|
+
*/
|
|
122
|
+
function RowLink(props) {
|
|
123
|
+
const { href, listing } = props;
|
|
124
|
+
if (href === undefined || neverSubmitted(listing))
|
|
125
|
+
return _jsx(_Fragment, { children: props.children });
|
|
126
|
+
const target = href(listing.id);
|
|
127
|
+
const Link = props.linkComponent;
|
|
128
|
+
const shared = {
|
|
129
|
+
href: target,
|
|
130
|
+
className: MINE_LINK_CLASS,
|
|
131
|
+
"data-testid": props.testId,
|
|
132
|
+
"data-analytics": "none",
|
|
133
|
+
"data-analytics-reason": "navigation to the listing's own page — the host app wraps this with its own tracked()",
|
|
134
|
+
...(props.label !== undefined ? { "aria-label": props.label } : {}),
|
|
135
|
+
};
|
|
136
|
+
return Link !== undefined ? (_jsx(Link, { ...shared, children: props.children })) : (_jsx("a", { ...shared, children: props.children }));
|
|
137
|
+
}
|
|
78
138
|
function MyListingRow(props) {
|
|
79
139
|
const t = useT();
|
|
80
|
-
const actions = useListingActions(props.listing.id, props.listing.status
|
|
140
|
+
const actions = useListingActions(props.listing.id, props.listing.status, {
|
|
141
|
+
// THE answer to "what can I do with this row", from the module that owns
|
|
142
|
+
// the state machine. Absent (a row read before stapel-listings 0.20.0),
|
|
143
|
+
// `ownerMoves` falls back to the mirror rather than to nothing.
|
|
144
|
+
available: props.listing.available_transitions,
|
|
145
|
+
});
|
|
81
146
|
// Both axes, both real: `MyListingCardSerializer` puts `moderation_status`
|
|
82
147
|
// on the owner's card, so the row no longer has to pass "approved" as a
|
|
83
148
|
// stand-in and lose the one combination that matters — a LIVE listing whose
|
|
@@ -99,11 +164,18 @@ function MyListingRow(props) {
|
|
|
99
164
|
const editGate = actions.editGate(true);
|
|
100
165
|
const hasEditor = onEdit !== undefined;
|
|
101
166
|
const cover = props.listing.images?.[0] ?? props.listing.images_draft?.[0];
|
|
102
|
-
return (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
167
|
+
return (_jsxs(List.Item, { "data-testid": "listings-mine-row", "data-listing-id": props.listing.id, style: { alignItems: "flex-start" }, children: [_jsx("style", { href: MINE_STYLE_HREF, precedence: "default", children: myListingsCss() }), _jsxs(Flex, { gap: spacing[3], style: { width: "100%", minWidth: 0 }, children: [_jsx("div", { style: { flex: `0 0 ${THUMB_WIDTH}`, width: THUMB_WIDTH }, children: _jsx(RowLink, { listing: props.listing, href: props.listingHref, linkComponent: props.linkComponent, testId: "listings-mine-thumb-link", label: heading ?? `#${String(props.listing.id)}`, children: _jsx(ListingPhoto, { imageRef: cover, alt: heading ?? `#${String(props.listing.id)}` }) }) }), _jsxs(Flex, { vertical: true, gap: spacing[2], style: { flex: "1 1 auto", minWidth: 0 }, children: [_jsx(RowLink, { listing: props.listing, href: props.listingHref, linkComponent: props.linkComponent, testId: "listings-mine-open", children: _jsx(Typography.Text, { strong: true, ellipsis: true, "data-testid": "listings-mine-title", children: heading ?? `#${String(props.listing.id)}` }) }), status !== undefined ? _jsx(ListingStatusBlock, { status: status }) : null, actions.error !== undefined && actions.error !== null ? (_jsx(ErrorAlert, { testId: "listings-mine-action-error", thrown: actions.error, variant: "inline" })) : null, _jsxs(Flex, { wrap: true, gap: spacing[2], align: "flex-start", children: [hasEditor ? (_jsx(GatedButton, { gate: editGate, size: "small", layout: "inline", testId: "listings-mine-edit", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", onClick: () => {
|
|
168
|
+
onEdit?.(props.listing.id);
|
|
169
|
+
}, children: t(LISTINGS_I18N_KEYS.mineEdit) })) : null, actions.moves.map((move) => (_jsx(GatedButton, { gate: move.gate, size: "small", layout: "inline", testId: move.testId, "data-listing-move": move.to, "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", onClick: move.run, children: t(move.labelKey) }, move.to))), _jsx(GatedButton, { gate: actions.remove, size: "small",
|
|
170
|
+
// STACK, alone among the row's actions, and measured: this is
|
|
171
|
+
// the one control that carries a STANDING sentence ("archive it
|
|
172
|
+
// first — a listing on sale cannot be deleted"), and inline a
|
|
173
|
+
// button plus sixty characters is one flex item too wide for a
|
|
174
|
+
// 390px row, so it wrapped inside itself and took four lines.
|
|
175
|
+
// Under the button the same sentence takes two.
|
|
176
|
+
layout: "stack", danger: true, testId: "listings-mine-delete", "data-analytics": "none", "data-analytics-reason": "opens the delete confirmation", onClick: () => {
|
|
177
|
+
props.onAskRemove(props.listing.id);
|
|
178
|
+
}, children: t(LISTINGS_I18N_KEYS.mineDelete) })] })] })] })] }));
|
|
107
179
|
}
|
|
108
180
|
export function MyListingsPane(props) {
|
|
109
181
|
const t = useT();
|
|
@@ -116,7 +188,7 @@ export function MyListingsPane(props) {
|
|
|
116
188
|
? bag.rows.data.find((row) => row.id === removingId)?.status
|
|
117
189
|
: undefined);
|
|
118
190
|
const paged = bag.prevPage.available || bag.nextPage.available;
|
|
119
|
-
const renderRow = (row) => (_jsx(MyListingRow, { listing: row, onEdit: props.onEdit, onAskRemove: setRemovingId }));
|
|
191
|
+
const renderRow = (row) => (_jsx(MyListingRow, { listing: row, onEdit: props.onEdit, onAskRemove: setRemovingId, listingHref: props.listingHref, linkComponent: props.linkComponent }));
|
|
120
192
|
return (_jsx(SkinTheme, { surface: "base", style: { padding: spacing[4], maxWidth: MINE_MEASURE }, ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsxs(Flex, { vertical: true, gap: spacing[4], "data-testid": "listings-mine", children: [_jsx(Typography.Title, { level: 3, children: t(LISTINGS_I18N_KEYS.mineTitle) }), !bag.gate.available ? (
|
|
121
193
|
// A refused pane is ONE state, not a banner above a live-looking
|
|
122
194
|
// dashboard: the tabs still advertised "Active 2 · Drafts 3" to a
|
|
@@ -158,7 +230,22 @@ export function MyListingsPane(props) {
|
|
|
158
230
|
// "no drafts" and "nothing sold yet" are different emptinesses and
|
|
159
231
|
// a test has to be able to tell which one is on screen.
|
|
160
232
|
_jsx("div", { "data-testid": "listings-mine-empty", "data-empty-tab": bag.tab, children: _jsx(EmptyState, { title: t(TAB_EMPTY[bag.tab]) }) })),
|
|
161
|
-
ready: (rows) => (
|
|
233
|
+
ready: (rows) => (
|
|
234
|
+
// ONE COPY OF EACH REFUSAL FOR THE WHOLE LIST.
|
|
235
|
+
//
|
|
236
|
+
// `<PaneGate>` pools what `<GatedControl>` would otherwise print
|
|
237
|
+
// per control: a seller with six published listings read
|
|
238
|
+
// "archive it first — a listing on sale cannot be deleted" six
|
|
239
|
+
// times down one column, and on a 390px phone that paragraph is
|
|
240
|
+
// 63px of every row. Each control keeps its
|
|
241
|
+
// `aria-describedby` pointing at the pooled sentence, so a
|
|
242
|
+
// screen reader still reads the reason WITH the control it
|
|
243
|
+
// belongs to — the sentence moves, it does not disappear, which
|
|
244
|
+
// is the difference between pooling and hiding.
|
|
245
|
+
//
|
|
246
|
+
// The gate itself is open: this pane's own refusal is `bag.gate`
|
|
247
|
+
// and it is answered far above, as one state.
|
|
248
|
+
_jsx(PaneGate, { gate: actionAvailable(), testId: "listings-mine-reasons", children: _jsx(List, { dataSource: [...rows], rowKey: (row) => row.id, renderItem: renderRow }) })),
|
|
162
249
|
}), paged ? (_jsxs(Flex, { gap: spacing[2], wrap: true, children: [_jsx(GatedButton, { gate: bag.prevPage, size: "small", layout: "inline", testId: "listings-mine-prev", "data-analytics": "none", "data-analytics-reason": "paging a list the person is already reading; not a business action", onClick: bag.goPrev, children: t(LISTINGS_I18N_KEYS.pagePrev) }), _jsx(GatedButton, { gate: bag.nextPage, size: "small", layout: "inline", testId: "listings-mine-next", "data-analytics": "none", "data-analytics-reason": "paging a list the person is already reading; not a business action", onClick: bag.goNext, children: t(LISTINGS_I18N_KEYS.pageNext) })] })) : null] })), _jsx(SkinConfirm, { open: removingId !== null, danger: true, title: t(LISTINGS_I18N_KEYS.mineDeleteConfirmTitle), body: t(LISTINGS_I18N_KEYS.mineDeleteConfirmBody), confirmLabel: t(LISTINGS_I18N_KEYS.mineDelete), confirming: removal.inFlight, "data-testid": "listings-mine-delete-confirm", onConfirm: () => {
|
|
163
250
|
removal.doRemove();
|
|
164
251
|
setRemovingId(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MyListingsPane.js","sourceRoot":"","sources":["../../src/default/MyListingsPane.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MyListingsPane.js","sourceRoot":"","sources":["../../src/default/MyListingsPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,64 @@
|
|
|
1
1
|
import type { ActionAvailability } from "@stapel/core";
|
|
2
|
-
import type { ListingLifecycleStatus } from "../api/types.js";
|
|
2
|
+
import type { ListingLifecycleStatus, ListingOwnerTransition } from "../api/types.js";
|
|
3
3
|
/**
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
4
|
+
* The lifecycle moves an owner can actually request, each behind a gate that
|
|
5
|
+
* states its reason.
|
|
6
|
+
*
|
|
7
|
+
* ── The server says what is offerable; nothing here re-derives it ──────────
|
|
8
|
+
*
|
|
9
|
+
* `MyListingCard.available_transitions` (stapel-listings 0.20.0) is the
|
|
10
|
+
* seller's half of the state machine, reported for ONE row by the module that
|
|
11
|
+
* owns the machine — and it is the same list `POST {id}/transition/`
|
|
12
|
+
* validates against, so the set a person is offered and the set the server
|
|
13
|
+
* takes are one object rather than two that agree today.
|
|
14
|
+
*
|
|
15
|
+
* Before it, this hook offered a FIXED three (archive, complete, delete) and
|
|
16
|
+
* gated them against a local copy of the table. That shipped two defects at
|
|
17
|
+
* once, and both were live:
|
|
18
|
+
*
|
|
19
|
+
* - **Buttons that did nothing.** `canTransition(from, to)` answers true for
|
|
20
|
+
* `from === to` — correctly, since the server returns early on a
|
|
21
|
+
* same-status move — so a SOLD row's "Mark sold" and an ARCHIVED row's
|
|
22
|
+
* "Archive" were enabled, clickable and inert. Two of four controls on
|
|
23
|
+
* every archived row.
|
|
24
|
+
* - **No way back.** The whole vocabulary was `archive` and `complete`, and
|
|
25
|
+
* both are EXITS. A seller who marked something sold by a misclick could
|
|
26
|
+
* not un-sell it: `SOLD → PUBLISHED` was in the machine and had no route,
|
|
27
|
+
* so the honest answer the cabinet had left was Delete and start again.
|
|
28
|
+
*
|
|
29
|
+
* {@link ListingActionsBag.moves} is now the whole answer for a dashboard:
|
|
30
|
+
* whatever it holds is drawn, and a control that would be a no-op is not in
|
|
31
|
+
* it. `ownerMoves` supplies the fallback for a surface that holds a bare
|
|
32
|
+
* `status` (a detail pane, a row read before 0.20.0) — never as a second
|
|
33
|
+
* opinion where the card carries the field.
|
|
6
34
|
*
|
|
7
35
|
* ── The mirror is UX, the 409 is the verdict ───────────────────────────────
|
|
8
36
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* the click. The server still decides — `transition_to` raises and the view
|
|
13
|
-
* answers 409 `error.409.invalid_listing_transition` with
|
|
14
|
-
* `params.from_status` — and that refusal is rendered as the named thing it
|
|
15
|
-
* is. The mirror may never block what the server would allow, which is why it
|
|
16
|
-
* is a copy of the table and not a summary of it.
|
|
37
|
+
* The server still decides — `transition_to` raises and the view answers 409
|
|
38
|
+
* `error.409.invalid_listing_transition` with `params.from_status` — and that
|
|
39
|
+
* refusal is rendered as the named thing it is.
|
|
17
40
|
*/
|
|
41
|
+
/** One move a seller may make from where the listing is now. */
|
|
42
|
+
export interface ListingMove {
|
|
43
|
+
/** Where it lands. The vocabulary `available_transitions` speaks. */
|
|
44
|
+
readonly to: ListingOwnerTransition;
|
|
45
|
+
/** The caption's i18n KEY — never a literal; this is a headless hook. */
|
|
46
|
+
readonly labelKey: string;
|
|
47
|
+
/** Mandate and in-flight only: the move itself is offered, or it would not
|
|
48
|
+
* be in this list. */
|
|
49
|
+
readonly gate: ActionAvailability;
|
|
50
|
+
/** A stable hook for a skin's `data-testid`, so a test names the MOVE
|
|
51
|
+
* rather than the position of a button in a wrapping row. */
|
|
52
|
+
readonly testId: string;
|
|
53
|
+
run(): void;
|
|
54
|
+
}
|
|
18
55
|
export interface ListingActionsBag {
|
|
56
|
+
/**
|
|
57
|
+
* Every move this listing's owner may make, in drawing order, and NOTHING
|
|
58
|
+
* else. Empty is a real answer (a row mid-load, a status with no owner
|
|
59
|
+
* edges) and a skin draws no action row for it.
|
|
60
|
+
*/
|
|
61
|
+
readonly moves: readonly ListingMove[];
|
|
19
62
|
readonly archive: ActionAvailability;
|
|
20
63
|
readonly complete: ActionAvailability;
|
|
21
64
|
readonly remove: ActionAvailability;
|
|
@@ -35,8 +78,16 @@ export interface ListingActionsBag {
|
|
|
35
78
|
doComplete(): void;
|
|
36
79
|
doRemove(): void;
|
|
37
80
|
readonly inFlight: boolean;
|
|
38
|
-
/** The last refusal from any of
|
|
81
|
+
/** The last refusal from any of them, in the one error dialect. */
|
|
39
82
|
readonly error: unknown;
|
|
40
83
|
}
|
|
41
|
-
export
|
|
84
|
+
export interface UseListingActionsOptions {
|
|
85
|
+
/**
|
|
86
|
+
* The row's own `available_transitions`, when the caller has a
|
|
87
|
+
* {@link MyListingCard} rather than a bare status. THE answer where it is
|
|
88
|
+
* present; see this file's header.
|
|
89
|
+
*/
|
|
90
|
+
readonly available?: readonly ListingOwnerTransition[] | undefined;
|
|
91
|
+
}
|
|
92
|
+
export declare function useListingActions(id: number, status: ListingLifecycleStatus | undefined, options?: UseListingActionsOptions): ListingActionsBag;
|
|
42
93
|
//# sourceMappingURL=ListingActions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingActions.d.ts","sourceRoot":"","sources":["../../src/headless/ListingActions.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ListingActions.d.ts","sourceRoot":"","sources":["../../src/headless/ListingActions.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAWzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;0BACsB;IACtB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC;iEAC6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,GAAG,IAAI,IAAI,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACjD,SAAS,IAAI,IAAI,CAAC;IAClB,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,IAAI,IAAI,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAwCD,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,CAAC;CACpE;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAC1C,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAqFnB"}
|
|
@@ -1,14 +1,51 @@
|
|
|
1
1
|
import { actionAvailable, actionBlocked, firstBlock, } from "@stapel/core";
|
|
2
|
-
import { useArchiveListing, useCompleteListing, useDeleteListing, } from "../model/mutations.js";
|
|
3
|
-
import { canDelete, canTransition } from "../model/transitions.js";
|
|
2
|
+
import { useArchiveListing, useCompleteListing, useDeleteListing, useTransitionListing, } from "../model/mutations.js";
|
|
3
|
+
import { canDelete, canTransition, ownerMoves } from "../model/transitions.js";
|
|
4
4
|
import { LISTINGS_I18N_KEYS } from "../i18n/keys.js";
|
|
5
5
|
import { useMandateGate } from "./useMandateGate.js";
|
|
6
|
-
|
|
6
|
+
/** What a caption says, keyed by where the move lands. */
|
|
7
|
+
const MOVE_LABEL = {
|
|
8
|
+
published: LISTINGS_I18N_KEYS.moveToPublished,
|
|
9
|
+
pending: LISTINGS_I18N_KEYS.moveToPending,
|
|
10
|
+
paused: LISTINGS_I18N_KEYS.moveToPaused,
|
|
11
|
+
draft: LISTINGS_I18N_KEYS.moveToDraft,
|
|
12
|
+
// These two edges have had buttons since this pane existed. They keep their
|
|
13
|
+
// captions: renaming them now would be a change of wording dressed as a
|
|
14
|
+
// change of capability.
|
|
15
|
+
sold: LISTINGS_I18N_KEYS.mineComplete,
|
|
16
|
+
archived: LISTINGS_I18N_KEYS.mineArchive,
|
|
17
|
+
// In the vocabulary because the enum is the whole lifecycle; not in any
|
|
18
|
+
// seller's offered set (`rejected` and `blocked` are moderation's verdicts,
|
|
19
|
+
// `expired` is the clock's). Named anyway rather than left to a lookup that
|
|
20
|
+
// could return undefined.
|
|
21
|
+
rejected: LISTINGS_I18N_KEYS.statusRejected,
|
|
22
|
+
blocked: LISTINGS_I18N_KEYS.statusBlocked,
|
|
23
|
+
expired: LISTINGS_I18N_KEYS.statusExpired,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* The caption for moving from *from* to *to*.
|
|
27
|
+
*
|
|
28
|
+
* One edge earns a second sentence: `EXPIRED → PENDING` is the same move as
|
|
29
|
+
* "send for review" asked at a different moment — nothing is wrong with the
|
|
30
|
+
* listing, its time simply ran out — and "Renew" is what a person came to the
|
|
31
|
+
* dashboard to do.
|
|
32
|
+
*/
|
|
33
|
+
function moveLabelKey(from, to) {
|
|
34
|
+
if (from === "expired" && to === "pending") {
|
|
35
|
+
return LISTINGS_I18N_KEYS.moveRenew;
|
|
36
|
+
}
|
|
37
|
+
return MOVE_LABEL[to];
|
|
38
|
+
}
|
|
39
|
+
export function useListingActions(id, status, options = {}) {
|
|
7
40
|
const mandate = useMandateGate();
|
|
8
41
|
const archive = useArchiveListing();
|
|
9
42
|
const complete = useCompleteListing();
|
|
10
43
|
const remove = useDeleteListing();
|
|
11
|
-
const
|
|
44
|
+
const move = useTransitionListing();
|
|
45
|
+
const inFlight = archive.isPending ||
|
|
46
|
+
complete.isPending ||
|
|
47
|
+
remove.isPending ||
|
|
48
|
+
move.isPending;
|
|
12
49
|
const busy = inFlight
|
|
13
50
|
? actionBlocked(LISTINGS_I18N_KEYS.blockedInFlight)
|
|
14
51
|
: actionAvailable();
|
|
@@ -31,7 +68,25 @@ export function useListingActions(id, status) {
|
|
|
31
68
|
const removeGate = firstBlock(mandate, known, busy, status !== undefined && !canDelete(status)
|
|
32
69
|
? actionBlocked(LISTINGS_I18N_KEYS.blockedDeleteActive)
|
|
33
70
|
: actionAvailable());
|
|
71
|
+
// Mandate and in-flight, and nothing else: a move that is IN this list is
|
|
72
|
+
// one the server has said it will take, so there is no third gate to
|
|
73
|
+
// consult. The whole point of `available_transitions` is that "may I?" was
|
|
74
|
+
// answered before the button was drawn.
|
|
75
|
+
const moveGate = firstBlock(mandate, busy);
|
|
76
|
+
const moves = status === undefined
|
|
77
|
+
? []
|
|
78
|
+
: ownerMoves(status, options.available).map((to) => ({
|
|
79
|
+
to,
|
|
80
|
+
labelKey: moveLabelKey(status, to),
|
|
81
|
+
gate: moveGate,
|
|
82
|
+
testId: `listings-mine-move-${to}`,
|
|
83
|
+
run: () => {
|
|
84
|
+
if (moveGate.available)
|
|
85
|
+
move.mutate({ id, to });
|
|
86
|
+
},
|
|
87
|
+
}));
|
|
34
88
|
return {
|
|
89
|
+
moves,
|
|
35
90
|
archive: archiveGate,
|
|
36
91
|
complete: completeGate,
|
|
37
92
|
remove: removeGate,
|
|
@@ -51,7 +106,7 @@ export function useListingActions(id, status) {
|
|
|
51
106
|
remove.mutate(id);
|
|
52
107
|
},
|
|
53
108
|
inFlight,
|
|
54
|
-
error: archive.error ?? complete.error ?? remove.error,
|
|
109
|
+
error: archive.error ?? complete.error ?? move.error ?? remove.error,
|
|
55
110
|
};
|
|
56
111
|
}
|
|
57
112
|
//# sourceMappingURL=ListingActions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingActions.js","sourceRoot":"","sources":["../../src/headless/ListingActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,UAAU,GACX,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ListingActions.js","sourceRoot":"","sources":["../../src/headless/ListingActions.tsx"],"names":[],"mappings":"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"}
|
package/dist/i18n/es.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,cA+NlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAG7D"}
|
package/dist/i18n/es.js
CHANGED
|
@@ -28,7 +28,7 @@ export const listingsI18nBundleEs = {
|
|
|
28
28
|
"error.403.listing_not_owner": "Este anuncio no es tuyo",
|
|
29
29
|
"error.404.listing_not_found": "No se encontró el anuncio",
|
|
30
30
|
"error.409.already_favorited": "El anuncio ya está en favoritos",
|
|
31
|
-
"error.409.invalid_listing_transition": "
|
|
31
|
+
"error.409.invalid_listing_transition": "Desde su estado actual, el anuncio no se puede mover así",
|
|
32
32
|
"error.409.listing_cannot_delete_active": "Archívalo primero — un anuncio a la venta no se puede borrar",
|
|
33
33
|
"listings.error.unknown": "Algo salió mal con este anuncio",
|
|
34
34
|
"listings.status.draft": "Borrador",
|
|
@@ -144,6 +144,12 @@ export const listingsI18nBundleEs = {
|
|
|
144
144
|
"listings.mine.archive": "Archivar",
|
|
145
145
|
"listings.mine.complete": "Marcar como vendido",
|
|
146
146
|
"listings.mine.delete": "Borrar",
|
|
147
|
+
"listings.mine.move.published": "Publicar de nuevo",
|
|
148
|
+
"listings.mine.move.pending": "Enviar a revisión",
|
|
149
|
+
"listings.mine.move.paused": "Pausar",
|
|
150
|
+
"listings.mine.move.draft": "Volver a borradores",
|
|
151
|
+
"listings.mine.move.renew": "Renovar",
|
|
152
|
+
"listings.mine.view": "Ver",
|
|
147
153
|
"listings.mine.delete_confirm_title": "¿Borrar este anuncio?",
|
|
148
154
|
"listings.mine.delete_confirm_body": "Desaparece de tu panel y no se puede recuperar. Archivarlo lo conserva.",
|
|
149
155
|
"listings.favorites.title": "Favoritos",
|
|
@@ -158,7 +164,7 @@ export const listingsI18nBundleEs = {
|
|
|
158
164
|
"listings.blocked.sign_in": "Inicia sesión para hacer esto",
|
|
159
165
|
"listings.blocked.guest": "Esta cuenta todavía no puede hacerlo — termina de configurarla primero",
|
|
160
166
|
"listings.blocked.mandate_unknown": "No pudimos comprobar tu cuenta, así que no adivinamos si puedes hacerlo",
|
|
161
|
-
"listings.blocked.transition": "
|
|
167
|
+
"listings.blocked.transition": "Desde su estado actual, el anuncio no se puede mover así",
|
|
162
168
|
"listings.blocked.delete_active": "Archívalo primero — un anuncio a la venta no se puede borrar",
|
|
163
169
|
"listings.blocked.in_flight": "Un momento — eso ya está en marcha",
|
|
164
170
|
"listings.blocked.no_editor": "Esta aplicación todavía no tiene una pantalla para editar un anuncio",
|
package/dist/i18n/es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,GAAG,qBAAqB;IAExB,4EAA4E;IAC5E,6BAA6B,EAAE,8BAA8B;IAC7D,0BAA0B,EACxB,uDAAuD;IACzD,uCAAuC,EACrC,sDAAsD;IACxD,yCAAyC,EACvC,2CAA2C;IAC7C,qCAAqC,EACnC,gDAAgD;IAClD,yCAAyC,EACvC,2DAA2D;IAC7D,6BAA6B,EAAE,yBAAyB;IACxD,6BAA6B,EAAE,2BAA2B;IAC1D,6BAA6B,EAAE,iCAAiC;IAChE,sCAAsC,EACpC,
|
|
1
|
+
{"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/keys.d.ts
CHANGED
|
@@ -195,6 +195,26 @@ export declare const LISTINGS_I18N_KEYS: {
|
|
|
195
195
|
readonly mineArchive: "listings.mine.archive";
|
|
196
196
|
readonly mineComplete: "listings.mine.complete";
|
|
197
197
|
readonly mineDelete: "listings.mine.delete";
|
|
198
|
+
/**
|
|
199
|
+
* One caption per MOVE the seller may make, keyed by where the move lands
|
|
200
|
+
* — the vocabulary `available_transitions` speaks.
|
|
201
|
+
*
|
|
202
|
+
* `archived` and `sold` reuse the two captions above, because those two
|
|
203
|
+
* edges have had buttons since this pane existed and renaming them now
|
|
204
|
+
* would be a change of wording pretending to be a change of capability.
|
|
205
|
+
* The rest are the way BACK, which had no route until stapel-listings
|
|
206
|
+
* 0.20.0 and therefore no caption: a seller who marked something sold by
|
|
207
|
+
* mistake could only start again.
|
|
208
|
+
*/
|
|
209
|
+
readonly moveToPublished: "listings.mine.move.published";
|
|
210
|
+
readonly moveToPending: "listings.mine.move.pending";
|
|
211
|
+
readonly moveToPaused: "listings.mine.move.paused";
|
|
212
|
+
readonly moveToDraft: "listings.mine.move.draft";
|
|
213
|
+
/** EXPIRED → PENDING is the same edge as "submit", asked at a different
|
|
214
|
+
* moment: nothing is wrong with the listing, its time simply ran out. */
|
|
215
|
+
readonly moveRenew: "listings.mine.move.renew";
|
|
216
|
+
/** Open this listing the way a buyer sees it. */
|
|
217
|
+
readonly mineView: "listings.mine.view";
|
|
198
218
|
/** Deleting is irreversible, so it asks — through the shared SkinConfirm,
|
|
199
219
|
* which is a bottom sheet on a phone. */
|
|
200
220
|
readonly mineDeleteConfirmTitle: "listings.mine.delete_confirm_title";
|
package/dist/i18n/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;IAe7B,+CAA+C;;IAE/C,qEAAqE;;IAErE,yEAAyE;;;;;IAKzE,oEAAoE;;;;;;;IASpE;;;;;;;;;OASG;;IAEH,yEAAyE;;IAEzE;;2EAEuE;;IAEvE;2EACuE;;IAEvE;oDACgD;;;;;;;IAShD,oEAAoE;;IAEpE;;;8DAG0D;;IAE1D,8EAA8E;;;;;;;;;;;IAW9E;;oDAEgD;;IAEhD;;;;;OAKG;;IAEH,2DAA2D;;;;;;;;;;;;;;;;;;;;;;IAwB3D;;6EAEyE;;;;;;;;IAQzE;;;yCAGqC;;;;;;;;;;;;;;;;;IAmBrC;;+CAE2C;;IAE3C;;uEAEmE;;;;;;;;;;;;IAcnE;iEAC6D;;;;IAI7D;iEAC6D;;;;;;;;IAQ7D;6CACyC;;;;;;;;;;;;IAgBzC;yCACqC;;;;IAIrC;;wEAEoE;;;;;;;;;;;CAiB5D,CAAC;AAEX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;IAe7B,+CAA+C;;IAE/C,qEAAqE;;IAErE,yEAAyE;;;;;IAKzE,oEAAoE;;;;;;;IASpE;;;;;;;;;OASG;;IAEH,yEAAyE;;IAEzE;;2EAEuE;;IAEvE;2EACuE;;IAEvE;oDACgD;;;;;;;IAShD,oEAAoE;;IAEpE;;;8DAG0D;;IAE1D,8EAA8E;;;;;;;;;;;IAW9E;;oDAEgD;;IAEhD;;;;;OAKG;;IAEH,2DAA2D;;;;;;;;;;;;;;;;;;;;;;IAwB3D;;6EAEyE;;;;;;;;IAQzE;;;yCAGqC;;;;;;;;;;;;;;;;;IAmBrC;;+CAE2C;;IAE3C;;uEAEmE;;;;;;;;;;;;IAcnE;iEAC6D;;;;IAI7D;iEAC6D;;;;;;;;IAQ7D;;;;;;;;;;OAUG;;;;;IAKH;6EACyE;;IAEzE,iDAAiD;;IAEjD;6CACyC;;;;;;;;;;;;IAgBzC;yCACqC;;;;IAIrC;;wEAEoE;;;;;;;;;;;CAiB5D,CAAC;AAEX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoOvD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAE3D"}
|
package/dist/i18n/keys.js
CHANGED
|
@@ -202,6 +202,26 @@ export const LISTINGS_I18N_KEYS = {
|
|
|
202
202
|
mineArchive: "listings.mine.archive",
|
|
203
203
|
mineComplete: "listings.mine.complete",
|
|
204
204
|
mineDelete: "listings.mine.delete",
|
|
205
|
+
/**
|
|
206
|
+
* One caption per MOVE the seller may make, keyed by where the move lands
|
|
207
|
+
* — the vocabulary `available_transitions` speaks.
|
|
208
|
+
*
|
|
209
|
+
* `archived` and `sold` reuse the two captions above, because those two
|
|
210
|
+
* edges have had buttons since this pane existed and renaming them now
|
|
211
|
+
* would be a change of wording pretending to be a change of capability.
|
|
212
|
+
* The rest are the way BACK, which had no route until stapel-listings
|
|
213
|
+
* 0.20.0 and therefore no caption: a seller who marked something sold by
|
|
214
|
+
* mistake could only start again.
|
|
215
|
+
*/
|
|
216
|
+
moveToPublished: "listings.mine.move.published",
|
|
217
|
+
moveToPending: "listings.mine.move.pending",
|
|
218
|
+
moveToPaused: "listings.mine.move.paused",
|
|
219
|
+
moveToDraft: "listings.mine.move.draft",
|
|
220
|
+
/** EXPIRED → PENDING is the same edge as "submit", asked at a different
|
|
221
|
+
* moment: nothing is wrong with the listing, its time simply ran out. */
|
|
222
|
+
moveRenew: "listings.mine.move.renew",
|
|
223
|
+
/** Open this listing the way a buyer sees it. */
|
|
224
|
+
mineView: "listings.mine.view",
|
|
205
225
|
/** Deleting is irreversible, so it asks — through the shared SkinConfirm,
|
|
206
226
|
* which is a bottom sheet on a phone. */
|
|
207
227
|
mineDeleteConfirmTitle: "listings.mine.delete_confirm_title",
|
|
@@ -364,6 +384,12 @@ export const listingsI18nBundleEn = {
|
|
|
364
384
|
"listings.mine.archive": "Archive",
|
|
365
385
|
"listings.mine.complete": "Mark sold",
|
|
366
386
|
"listings.mine.delete": "Delete",
|
|
387
|
+
"listings.mine.move.published": "Publish again",
|
|
388
|
+
"listings.mine.move.pending": "Send for review",
|
|
389
|
+
"listings.mine.move.paused": "Pause",
|
|
390
|
+
"listings.mine.move.draft": "Move back to drafts",
|
|
391
|
+
"listings.mine.move.renew": "Renew",
|
|
392
|
+
"listings.mine.view": "View",
|
|
367
393
|
"listings.mine.delete_confirm_title": "Delete this listing?",
|
|
368
394
|
"listings.mine.delete_confirm_body": "It disappears from your dashboard and cannot be brought back. Archiving keeps it.",
|
|
369
395
|
"listings.favorites.title": "Favourites",
|
|
@@ -375,7 +401,32 @@ export const listingsI18nBundleEn = {
|
|
|
375
401
|
"listings.blocked.sign_in": "Sign in to do this",
|
|
376
402
|
"listings.blocked.guest": "Your account cannot do this yet — finish setting it up first",
|
|
377
403
|
"listings.blocked.mandate_unknown": "We could not check your account, so we are not guessing whether you may do this",
|
|
378
|
-
|
|
404
|
+
/**
|
|
405
|
+
* THE REFUSAL DOES NOT QUOTE THE STATE'S CODE NAME.
|
|
406
|
+
*
|
|
407
|
+
* Both sentences below used to carry `{from_status}`, and what landed in
|
|
408
|
+
* that slot was the wire value: a live cabinet told a seller, in Russian,
|
|
409
|
+
* that "a listing in status 'draft' cannot be moved that way" — and then
|
|
410
|
+
* the same sentence with 'archived' — while the row's own status tag, two
|
|
411
|
+
* lines above, said "Draft" and "Archived" in the reader's own words.
|
|
412
|
+
* The translation existed; it simply was not the thing being interpolated.
|
|
413
|
+
*
|
|
414
|
+
* The placeholder is gone rather than fed a translated value, because it
|
|
415
|
+
* was never adding information the screen did not already carry: the status
|
|
416
|
+
* is named, in words, beside every control this refusal appears under. What
|
|
417
|
+
* the reader needs is which MOVE is impossible, and that is the control
|
|
418
|
+
* they are looking at.
|
|
419
|
+
*
|
|
420
|
+
* The SERVER's own 409 (`error.409.invalid_listing_transition`) carries the
|
|
421
|
+
* same placeholder and is reworded in the ru and es bundles beside this
|
|
422
|
+
* one, where a real reader met it. It is deliberately NOT overridden in the
|
|
423
|
+
* English bundle: that bundle spreads the generated backend texts whole,
|
|
424
|
+
* and a hand-written entry for one error code makes this pair's catalogue
|
|
425
|
+
* claim a namespace it does not own — `stapel/i18n-locale-parity` says so
|
|
426
|
+
* and is right. The refusal is in any case now close to unreachable: the
|
|
427
|
+
* dashboard offers only the moves the server declared.
|
|
428
|
+
*/
|
|
429
|
+
"listings.blocked.transition": "This listing cannot be moved that way from where it is",
|
|
379
430
|
"listings.blocked.delete_active": "Archive it first — a listing that is on sale cannot be deleted",
|
|
380
431
|
"listings.blocked.in_flight": "One moment — that is already under way",
|
|
381
432
|
"listings.blocked.no_editor": "This app has no screen for editing a listing yet",
|