@chatwarden/player-react 0.1.2 → 0.1.3
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 +48 -24
- package/dist/src/Dialog.d.ts.map +1 -1
- package/dist/src/Dialog.js +2 -13
- package/dist/src/Dialog.js.map +1 -1
- package/dist/src/ReportDialog.d.ts +30 -16
- package/dist/src/ReportDialog.d.ts.map +1 -1
- package/dist/src/ReportDialog.js +59 -70
- package/dist/src/ReportDialog.js.map +1 -1
- package/dist/src/i18n.d.ts +26 -2
- package/dist/src/i18n.d.ts.map +1 -1
- package/dist/src/i18n.js +26 -2
- package/dist/src/i18n.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/package.json +5 -5
- package/src/Dialog.tsx +2 -12
- package/src/ReportDialog.tsx +137 -122
- package/src/i18n.ts +26 -2
- package/src/index.ts +1 -1
- package/src/styles.css +45 -61
- package/dist/src/FollowUp.d.ts +0 -35
- package/dist/src/FollowUp.d.ts.map +0 -1
- package/dist/src/FollowUp.js +0 -69
- package/dist/src/FollowUp.js.map +0 -1
- package/dist/src/Picker.d.ts +0 -14
- package/dist/src/Picker.d.ts.map +0 -1
- package/dist/src/Picker.js +0 -14
- package/dist/src/Picker.js.map +0 -1
- package/src/FollowUp.tsx +0 -139
- package/src/Picker.tsx +0 -60
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ exist in 18.3 (`useId`, `useRef`). The unit and interaction tests run on React 1
|
|
|
20
20
|
only: no run-time import of it, or of the HTTP package, is in the bundle. Node 22.13 or newer for the tooling; the components
|
|
21
21
|
themselves run in a browser and import no `node:` module.
|
|
22
22
|
|
|
23
|
-
Your server needs `@chatwarden/http` for the routes the components call (`playerRoutes`). The JavaScript is under
|
|
23
|
+
Your server needs `@chatwarden/http` for the routes the components call (`playerRoutes`). The JavaScript is under 10 KB gzipped
|
|
24
24
|
with React external, and the stylesheet under 6 KB.
|
|
25
25
|
|
|
26
26
|
## Quick start
|
|
@@ -54,24 +54,20 @@ export function GameShell({ inMatch }: { inMatch: boolean }) {
|
|
|
54
54
|
}
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
Reporting is one step. The dialog asks "Report this message?", shows the line, and has an optional "Why?" (one select, the reasons in
|
|
58
|
+
groups) and a Report button; a note is behind "Add a note". How it works is the studio's setting (the Reporting section of the moderator
|
|
59
|
+
hub, or `reporting` in code): which reasons, their groups and hints, whether a reason is required, and the thank-you. Read it from
|
|
60
|
+
`GET /rules` and pass it to the dialog. Your server adds the room and the seats and calls the kit:
|
|
60
61
|
|
|
61
62
|
```ts
|
|
62
|
-
import type {
|
|
63
|
-
import type {
|
|
63
|
+
import type { ReportResult } from '@chatwarden/core';
|
|
64
|
+
import type { ReportDraft } from '@chatwarden/player-react';
|
|
64
65
|
|
|
65
|
-
// `cw` is your createChatwarden(...) instance. Call
|
|
66
|
-
//
|
|
66
|
+
// `cw` is your createChatwarden(...) instance. Call this behind your own route, for example POST /report: `roomId` and the seats come
|
|
67
|
+
// from your session, never from the client. The draft is the kit's own `reason` and `note`, so it spreads straight in.
|
|
67
68
|
export function takeReport(roomId: string, mySeat: string, theirSeat: string, draft: ReportDraft): Promise<ReportResult> {
|
|
68
69
|
return cw.reports.submit({ roomId, reporterSeat: mySeat, targetSeat: theirSeat, ...draft });
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
// The optional follow-up of a one-tap report: a reason and a note, within ten minutes, once, from the reporter only.
|
|
72
|
-
export function addToReport(reportId: string, mySeat: string, detail: ReportFollowUp): Promise<ReportDetailResult> {
|
|
73
|
-
return cw.reports.addDetail(reportId, mySeat, detail);
|
|
74
|
-
}
|
|
75
71
|
```
|
|
76
72
|
|
|
77
73
|
Load the settings before the dialog is drawn, so it opens in the right flow and never changes under the player's hands. A failed load
|
|
@@ -82,7 +78,7 @@ spells it out, with the dialog's own words:
|
|
|
82
78
|
import { useEffect, useState } from 'react';
|
|
83
79
|
import type { PlayerClient, PlayerReporting } from '@chatwarden/player-react';
|
|
84
80
|
|
|
85
|
-
/** One tap, no reasons to offer
|
|
81
|
+
/** One tap, no reasons to offer, the dialog's own thank-you: what a player gets when the settings cannot be loaded. */
|
|
86
82
|
const ONE_TAP: PlayerReporting = { flow: 'one_tap', thanks: '', reasons: [] };
|
|
87
83
|
|
|
88
84
|
/** The studio's reporting settings from `GET /rules`: `undefined` while they load, the one-tap fallback if that fails. */
|
|
@@ -116,23 +112,51 @@ export function ReportMessage({ client, line, name, close }: { client: PlayerCli
|
|
|
116
112
|
reporting={reporting}
|
|
117
113
|
onClose={close}
|
|
118
114
|
onSubmit={(draft) => fetch('/report', { method: 'POST', body: JSON.stringify(draft) }).then((r) => r.json())}
|
|
119
|
-
onAddDetail={(id, detail) => fetch(`/report/${id}/detail`, { method: 'POST', body: JSON.stringify(detail) }).then((r) => r.json())}
|
|
120
115
|
/>
|
|
121
116
|
);
|
|
122
117
|
}
|
|
123
118
|
```
|
|
124
119
|
|
|
125
|
-
- **One
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
- **
|
|
130
|
-
|
|
120
|
+
- **One step, whatever the flow.** Report with nothing chosen files the report at once. A reason chosen in the select, and a note typed
|
|
121
|
+
behind "Add a note" (shown straight away when the chosen reason asks for one), go in the same report: `onSubmit` gets
|
|
122
|
+
`{ reason?, note? }` once. The dialog then reads "Report sent", shows the studio's thank-you (and how many reports are left today) and
|
|
123
|
+
has Close. There is no second step.
|
|
124
|
+
- **Reason required** (`flow: 'reason_required'`): the label is "Why?" and the select is required. Report without a reason shows an inline
|
|
125
|
+
error, puts focus on the select and sends nothing. In the other flows the select is "Why? (optional)".
|
|
126
|
+
- **`onAddDetail` is deprecated.** It is still accepted (and `ReportFollowUp` is still exported) so existing code compiles, but the dialog
|
|
127
|
+
never calls it. Remove it. `cw.reports.addDetail` is still there if you want a follow-up screen of your own.
|
|
131
128
|
- **A reason is a hint.** The kit stores it as `reportedReason`; the moderators (and later the AI) decide what the report really is.
|
|
132
|
-
- **Without `reporting`** the dialog
|
|
133
|
-
loaded. Pass `reporting` before the dialog opens: one that arrives later changes the flow under the player.
|
|
129
|
+
- **Without `reporting`** the dialog has no reasons to offer: one press files the report, with its own words. That is the same as when
|
|
130
|
+
`GET /rules` cannot be loaded. Pass `reporting` before the dialog opens: one that arrives later changes the flow under the player.
|
|
134
131
|
- **Stale settings.** If the studio changes the list while a dialog is open, the kit refuses an unknown reason (`reason_unknown`) or a
|
|
135
132
|
missing one (`reason_required`) and the dialog says so. Read `GET /rules` again before the next report.
|
|
133
|
+
- **Your own controls (`extra`, experimental).** A node placed inside the form under the reason and the note, above Report and Cancel,
|
|
134
|
+
for something of your own, such as an "Also mute this player" checkbox. You own its state; the dialog only places it (spacing, no other
|
|
135
|
+
styling), keeps its controls in the Tab order (reason, note, yours, Report, Cancel) and in the focus trap, and drops it once the report
|
|
136
|
+
is sent. It is inside the dialog's form, so give your buttons `type="button"`: a plain `<button>`, or Enter in a text field of
|
|
137
|
+
yours, sends the report. Send what you chose from your own `onSubmit`:
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
import { useState } from 'react';
|
|
141
|
+
import { ReportDialog } from '@chatwarden/player-react';
|
|
142
|
+
import type { PlayerReporting, ReportResult } from '@chatwarden/player-react';
|
|
143
|
+
|
|
144
|
+
export function ReportAndMaybeMute(props: { reporting: PlayerReporting; close: () => void; send: (mute: boolean, draft: object) => Promise<ReportResult> }) {
|
|
145
|
+
const [mute, setMute] = useState(false);
|
|
146
|
+
return (
|
|
147
|
+
<ReportDialog
|
|
148
|
+
reporting={props.reporting}
|
|
149
|
+
onClose={props.close}
|
|
150
|
+
onSubmit={(draft) => props.send(mute, draft)}
|
|
151
|
+
extra={
|
|
152
|
+
<label>
|
|
153
|
+
<input type="checkbox" checked={mute} onChange={(e) => setMute(e.target.checked)} /> Also mute this player
|
|
154
|
+
</label>
|
|
155
|
+
}
|
|
156
|
+
/>
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
```
|
|
136
160
|
|
|
137
161
|
## Put it on your server
|
|
138
162
|
|
|
@@ -215,7 +239,7 @@ Theming).
|
|
|
215
239
|
| `NoticeQueue` | The pending notices, oldest first, one at a time in a modal dialog. A warning has an Acknowledge button; every other notice has Got it. Both call `POST /notices/:id/ack`. Nothing is rendered when there is nothing to show. | `client`, `canShow` (default `true`), `appealUrl`, `refreshKey`, `onAcknowledged(notice)`, `onPendingChange(count)` |
|
|
216
240
|
| `MyRecord` | What is on the player's record now, newest first, from `GET /record`; or "Your record is clear". | `client`, `appealUrl`, `refreshKey` |
|
|
217
241
|
| `RulesPage` | The summary and the numbered rules from `GET /rules`. The numbers are the kit's: a retired rule leaves a gap. | `client`, `refreshKey` |
|
|
218
|
-
| `ReportDialog` |
|
|
242
|
+
| `ReportDialog` | A one-step report: "Report this message?", the line, an optional "Why?" select (the studio's reasons in groups; required in the reason-required flow) and a note behind "Add a note". Maps every refusal the kit has to its own plain message and shows how many reports are left today. | `onSubmit(draft)` returning a `ReportResult`, `onClose`, `reporting` (from `GET /rules`), `line`, `targetName`, `extra` (experimental: your own controls in the form) (`onAddDetail` is deprecated and unused) |
|
|
219
243
|
| `RestrictedChatLine` | One line for where a chat box would be: why the player cannot type and until when. | `until` (epoch ms or `null`), `byModerator`, `refCode` |
|
|
220
244
|
|
|
221
245
|
- **The hold.** `canShow={false}` keeps notices and shows nothing, so a notice never interrupts a match. They are kept, not dropped and
|
package/dist/src/Dialog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAejE,wBAAgB,MAAM,CAAC,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,EAAE;IACD,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,YAAY,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC5C,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA0EA"}
|
package/dist/src/Dialog.js
CHANGED
|
@@ -8,19 +8,8 @@ import { useEffect, useRef, useState } from 'react';
|
|
|
8
8
|
// does not move focus (mousedown is cancelled), and a document-wide `focusin` guard pulls focus back if anything outside the window
|
|
9
9
|
// gets it (a script, a click on a game control that is still reachable).
|
|
10
10
|
const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
* browser moves between its radios with the arrow keys: counting every radio would make "the first control" the wrong one to wrap at.
|
|
14
|
-
*/
|
|
15
|
-
function tabStops(box) {
|
|
16
|
-
const all = [...box.querySelectorAll(FOCUSABLE)];
|
|
17
|
-
return all.filter((el) => {
|
|
18
|
-
if (!(el instanceof HTMLInputElement) || el.type !== 'radio' || el.name === '')
|
|
19
|
-
return true;
|
|
20
|
-
const group = all.filter((o) => o instanceof HTMLInputElement && o.type === 'radio' && o.name === el.name);
|
|
21
|
-
return el === (group.find((r) => r.checked) ?? group[0]);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
11
|
+
/** The controls Tab visits, in order. */
|
|
12
|
+
const tabStops = (box) => [...box.querySelectorAll(FOCUSABLE)];
|
|
24
13
|
export function Dialog({ labelledBy, initialFocus, onEscape, returnFocusTo, children, }) {
|
|
25
14
|
const box = useRef(null);
|
|
26
15
|
const fallback = useRef(returnFocusTo);
|
package/dist/src/Dialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../src/Dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGpD,mIAAmI;AACnI,kIAAkI;AAClI,2EAA2E;AAC3E,EAAE;AACF,mIAAmI;AACnI,oIAAoI;AACpI,yEAAyE;AAEzE,MAAM,SAAS,GAAG,2IAA2I,CAAC;AAE9J
|
|
1
|
+
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../src/Dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGpD,mIAAmI;AACnI,kIAAkI;AAClI,2EAA2E;AAC3E,EAAE;AACF,mIAAmI;AACnI,oIAAoI;AACpI,yEAAyE;AAEzE,MAAM,SAAS,GAAG,2IAA2I,CAAC;AAE9J,yCAAyC;AACzC,MAAM,QAAQ,GAAG,CAAC,GAAgB,EAAiB,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAc,SAAS,CAAC,CAAC,CAAC;AAExG,MAAM,UAAU,MAAM,CAAC,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,GAWT;IACC,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,GAAG,aAAa,CAAC;IACjC,+HAA+H;IAC/H,wGAAwG;IACxG,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAiB,GAAG,EAAE,CAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnH,SAAS,CAAC,GAAG,EAAE;QACb,CAAC,YAAY,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,CAAC,CAAa,EAAQ,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACxB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;YAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,CAAC,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACnH,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,oEAAoE;YACpE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACnD,2HAA2H;YAC3H,sFAAsF;YACtF,IAAI,MAAM,YAAY,WAAW,IAAI,MAAM,CAAC,WAAW;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;iBACnE,CAAC;gBACJ,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,gEAAgE;gBAClE,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,+BAA+B;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,CAAC,CAAgC,EAAQ,EAAE;QAC3D,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACvB,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO;YACnC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAgB,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAgB,CAAC;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;QACtC,oHAAoH;QACpH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAqB,CAAC,CAAC;QACrD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAC,UAAU,EACpB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,2HAA2H;YAC3H,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;QACvD,CAAC,YAED,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,QAAQ,gBAAY,MAAM,qBAAkB,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,YACjI,QAAQ,GACL,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
import type { PlayerReporting, ReportDetailResult, ReportResult } from '@chatwarden/core';
|
|
2
|
-
import type { ReportFollowUp } from './FollowUp.js';
|
|
3
3
|
import type { DialogHostProps, PlayerUiProps } from './ui.js';
|
|
4
4
|
/**
|
|
5
5
|
* What the player filled in. Your server adds the room and the seats and calls `cw.reports.submit({ ...draft, roomId, reporterSeat,
|
|
6
|
-
* targetSeat })`. The dialog sends `reason` (an id from the studio's `reporting` list, or nothing
|
|
7
|
-
* hint: the moderators decide what a report really is.
|
|
6
|
+
* targetSeat })`. The dialog sends `reason` (an id from the studio's `reporting` list, or nothing) and `note` in the one report. A
|
|
7
|
+
* reason is only a hint: the moderators decide what a report really is.
|
|
8
8
|
*/
|
|
9
9
|
export interface ReportDraft {
|
|
10
10
|
/** The reason the player chose: an id from `reporting.reasons`. Left out when none was chosen. */
|
|
@@ -12,7 +12,14 @@ export interface ReportDraft {
|
|
|
12
12
|
/** The note, trimmed; left out when blank. */
|
|
13
13
|
note?: string;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* A reason and a note added to a report after it was filed (`cw.reports.addDetail`). The dialog no longer has a follow-up step (the
|
|
17
|
+
* reason and the note go in the one report), so this is only the shape a follow-up of your own may take.
|
|
18
|
+
*/
|
|
19
|
+
export interface ReportFollowUp {
|
|
20
|
+
reason?: string;
|
|
21
|
+
note?: string;
|
|
22
|
+
}
|
|
16
23
|
export interface ReportDialogProps extends PlayerUiProps, DialogHostProps {
|
|
17
24
|
/**
|
|
18
25
|
* Sends the report: your server calls `cw.reports.submit({ ...draft, roomId, reporterSeat, targetSeat })` and returns its
|
|
@@ -20,31 +27,38 @@ export interface ReportDialogProps extends PlayerUiProps, DialogHostProps {
|
|
|
20
27
|
*/
|
|
21
28
|
onSubmit: (draft: ReportDraft) => Promise<ReportResult>;
|
|
22
29
|
/**
|
|
23
|
-
* The
|
|
24
|
-
*
|
|
30
|
+
* @deprecated The dialog is one step now: the reason and the note go in the single `onSubmit`, so this is accepted but never
|
|
31
|
+
* called. Remove it. (`cw.reports.addDetail` is still there for a follow-up of your own.)
|
|
25
32
|
*/
|
|
26
33
|
onAddDetail?: (reportId: string, detail: ReportFollowUp) => Promise<ReportDetailResult>;
|
|
27
34
|
/** Called on Escape, Cancel and Close. Unmount the dialog in answer. */
|
|
28
35
|
onClose: () => void;
|
|
29
36
|
/**
|
|
30
|
-
* How reporting works here: `(await createPlayerClient.rules()).reporting`, the `reporting` part of `GET /rules`. It
|
|
31
|
-
* (
|
|
32
|
-
* one
|
|
37
|
+
* How reporting works here: `(await createPlayerClient.rules()).reporting`, the `reporting` part of `GET /rules`. It gives the
|
|
38
|
+
* reasons (grouped, with hints), whether a reason is required, and the thank-you. Without it the dialog has no reasons to offer:
|
|
39
|
+
* one press files the report, with the dialog's own words, the same as when `GET /rules` cannot be loaded.
|
|
33
40
|
*/
|
|
34
41
|
reporting?: PlayerReporting;
|
|
35
42
|
/** Who is being reported, as the player knows them (a handle). Shown as text in the heading. */
|
|
36
43
|
targetName?: string;
|
|
37
44
|
/** The message being reported. Shown as quoted text (cut if very long) so the player sees what they are reporting. */
|
|
38
45
|
line?: string;
|
|
46
|
+
/**
|
|
47
|
+
* @experimental Your own controls, placed inside the form under the reason and the note and above Report and Cancel (for example
|
|
48
|
+
* an "Also mute this player" checkbox and a line about false reports). You own their state; the dialog only places them, adds no
|
|
49
|
+
* styling beyond the spacing, and keeps their focusable controls in its Tab order (reason, note, yours, Report, Cancel) and its
|
|
50
|
+
* focus trap. They are not shown once the report is sent. They sit inside the dialog's form, so give your buttons `type="button"`:
|
|
51
|
+
* a plain button, or Enter in a text field of yours, sends the report.
|
|
52
|
+
*/
|
|
53
|
+
extra?: ReactNode;
|
|
39
54
|
}
|
|
40
55
|
/**
|
|
41
|
-
* A dialog for reporting a message or a player
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* chooses to report, and unmount it in `onClose`.
|
|
56
|
+
* A dialog for reporting a message or a player, in one step: "Report this message?", the quoted line, an optional "Why?" (one
|
|
57
|
+
* select, the reasons in groups) and a Report button. A note is behind "Add a note", or shown when the chosen reason asks for one.
|
|
58
|
+
* Report sends the reason and the note together (`onSubmit`); the dialog then says "Report sent" and the thank-you. The studio's
|
|
59
|
+
* `reporting` setting decides whether the reason is required (`reason_required`: the select is required, and Report without a
|
|
60
|
+
* reason asks for one and sends nothing), what the reasons are, and the thank-you. The reason is only a hint for the moderators.
|
|
61
|
+
* Every refusal the kit can give has its own plain message. Render it when the player chooses to report, and unmount it in `onClose`.
|
|
48
62
|
*/
|
|
49
63
|
export declare function ReportDialog(props: ReportDialogProps): import("react").JSX.Element;
|
|
50
64
|
//# sourceMappingURL=ReportDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportDialog.d.ts","sourceRoot":"","sources":["../../src/ReportDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReportDialog.d.ts","sourceRoot":"","sources":["../../src/ReportDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOzG,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa,EAAE,eAAe;IACvE;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxF,wEAAwE;IACxE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sHAAsH;IACtH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA6BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA0NpD"}
|
package/dist/src/ReportDialog.js
CHANGED
|
@@ -3,8 +3,6 @@ import { useEffect, useId, useRef, useState } from 'react';
|
|
|
3
3
|
import { NOTE_MAX } from './constants.js';
|
|
4
4
|
import { PlayerError } from './client.js';
|
|
5
5
|
import { Dialog } from './Dialog.js';
|
|
6
|
-
import { DETAIL_REFUSED_TEXT, FollowUp } from './FollowUp.js';
|
|
7
|
-
import { Picker } from './Picker.js';
|
|
8
6
|
import { groupReasons, readReporting } from './reporting.js';
|
|
9
7
|
import { errorText, Portal, Root, useUi } from './ui.js';
|
|
10
8
|
// One plain message for each refusal the kit has. Anything else (a refusal a newer kit adds) gets the last one.
|
|
@@ -29,73 +27,64 @@ const quoted = (line) => {
|
|
|
29
27
|
return plain.length > LINE_MAX ? `${plain.slice(0, LINE_MAX).trimEnd()}…` : plain;
|
|
30
28
|
};
|
|
31
29
|
/**
|
|
32
|
-
* A dialog for reporting a message or a player
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* chooses to report, and unmount it in `onClose`.
|
|
30
|
+
* A dialog for reporting a message or a player, in one step: "Report this message?", the quoted line, an optional "Why?" (one
|
|
31
|
+
* select, the reasons in groups) and a Report button. A note is behind "Add a note", or shown when the chosen reason asks for one.
|
|
32
|
+
* Report sends the reason and the note together (`onSubmit`); the dialog then says "Report sent" and the thank-you. The studio's
|
|
33
|
+
* `reporting` setting decides whether the reason is required (`reason_required`: the select is required, and Report without a
|
|
34
|
+
* reason asks for one and sends nothing), what the reasons are, and the thank-you. The reason is only a hint for the moderators.
|
|
35
|
+
* Every refusal the kit can give has its own plain message. Render it when the player chooses to report, and unmount it in `onClose`.
|
|
39
36
|
*/
|
|
40
37
|
export function ReportDialog(props) {
|
|
41
|
-
const { onSubmit,
|
|
38
|
+
const { onSubmit, onClose, targetName, line, theme, className, container, returnFocusTo, extra } = props;
|
|
42
39
|
const ui = useUi(props);
|
|
43
40
|
const { t } = ui;
|
|
44
41
|
const heading = useRef(null);
|
|
45
|
-
const
|
|
46
|
-
|
|
42
|
+
const select = useRef(null);
|
|
43
|
+
const noteField = useRef(null);
|
|
44
|
+
// One report on its way at a time: a second click, or a second Enter, does nothing.
|
|
47
45
|
const sending = useRef(false);
|
|
48
46
|
const titleId = useId();
|
|
49
|
-
const
|
|
47
|
+
const reasonId = useId();
|
|
50
48
|
const noteId = useId();
|
|
51
|
-
const
|
|
49
|
+
const noteHintId = useId();
|
|
50
|
+
const reasonHintId = useId();
|
|
52
51
|
const missingId = useId();
|
|
53
|
-
const [reason, setReason] = useState(
|
|
52
|
+
const [reason, setReason] = useState('');
|
|
54
53
|
const [note, setNote] = useState('');
|
|
54
|
+
// The note is shown once it was asked for (the "Add a note" button, or a reason that asks for one) and then stays.
|
|
55
|
+
const [noteOpen, setNoteOpen] = useState(false);
|
|
56
|
+
const [focusNote, setFocusNote] = useState(false);
|
|
55
57
|
const [missing, setMissing] = useState(false);
|
|
56
58
|
const [busy, setBusy] = useState(false);
|
|
57
59
|
const [failure, setFailure] = useState(null);
|
|
58
60
|
const [result, setResult] = useState(null);
|
|
59
|
-
//
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const chosen =
|
|
71
|
-
|
|
72
|
-
const
|
|
61
|
+
// No `reporting` (or something that is not the payload): no reasons to offer, as when `GET /rules` cannot be loaded.
|
|
62
|
+
const read = readReporting(props.reporting) ?? { flow: 'one_tap', reasons: [], thanks: '' };
|
|
63
|
+
const thanks = read.thanks.trim();
|
|
64
|
+
const hasReasons = read.reasons.length > 0;
|
|
65
|
+
// A flow that asks for a reason has nothing to ask with when the list is empty.
|
|
66
|
+
const required = hasReasons && read.flow === 'reason_required';
|
|
67
|
+
const groups = groupReasons(read.reasons);
|
|
68
|
+
const named = groups.filter((g) => g.name !== '');
|
|
69
|
+
const bare = groups.filter((g) => g.name === '').flatMap((g) => g.items);
|
|
70
|
+
// The reason is read from the CURRENT list: if `reporting` changes while the dialog is open and the id the player chose is gone, the
|
|
71
|
+
// select shows the placeholder, and this is undefined, so nothing stale is sent (and a required reason is asked for again).
|
|
72
|
+
const chosen = read.reasons.find((r) => r.id === reason);
|
|
73
|
+
const reasonValue = chosen === undefined ? '' : chosen.id;
|
|
74
|
+
const hint = chosen !== undefined && chosen.hint !== '' ? chosen.hint : null;
|
|
75
|
+
const noteShown = hasReasons && noteOpen;
|
|
73
76
|
// The form is gone once there is an answer: focus goes back to the heading, so the answer is read and focus is not lost.
|
|
74
77
|
useEffect(() => {
|
|
75
78
|
if (result !== null)
|
|
76
79
|
heading.current?.focus();
|
|
77
80
|
}, [result]);
|
|
81
|
+
// "Add a note" is replaced by the field: focus follows it.
|
|
78
82
|
useEffect(() => {
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
if (until === null)
|
|
86
|
-
return undefined;
|
|
87
|
-
let timer;
|
|
88
|
-
// Looks at the clock again when the time comes, so a clock that has not moved does not end the offer early.
|
|
89
|
-
const check = () => {
|
|
90
|
-
const left = until - ui.now();
|
|
91
|
-
if (left < 0)
|
|
92
|
-
setExpired(true);
|
|
93
|
-
else
|
|
94
|
-
timer = setTimeout(check, Math.min(Math.max(left + 1, 50), 2_000_000_000));
|
|
95
|
-
};
|
|
96
|
-
check();
|
|
97
|
-
return () => clearTimeout(timer);
|
|
98
|
-
}, [until]);
|
|
83
|
+
if (focusNote) {
|
|
84
|
+
noteField.current?.focus();
|
|
85
|
+
setFocusNote(false);
|
|
86
|
+
}
|
|
87
|
+
}, [focusNote]);
|
|
99
88
|
const send = async (draft) => {
|
|
100
89
|
sending.current = true;
|
|
101
90
|
setBusy(true);
|
|
@@ -116,25 +105,20 @@ export function ReportDialog(props) {
|
|
|
116
105
|
e.preventDefault();
|
|
117
106
|
if (sending.current)
|
|
118
107
|
return;
|
|
119
|
-
if (
|
|
108
|
+
if (required && reasonValue === '') {
|
|
120
109
|
setMissing(true);
|
|
121
|
-
|
|
110
|
+
select.current?.focus();
|
|
122
111
|
return;
|
|
123
112
|
}
|
|
124
|
-
const draft =
|
|
125
|
-
if (
|
|
113
|
+
const draft = {};
|
|
114
|
+
if (reasonValue !== '')
|
|
115
|
+
draft.reason = reasonValue;
|
|
116
|
+
if (noteShown && trimmed !== '')
|
|
126
117
|
draft.note = trimmed;
|
|
127
118
|
void send(draft);
|
|
128
119
|
};
|
|
129
|
-
const skip = () => {
|
|
130
|
-
if (sending.current)
|
|
131
|
-
return;
|
|
132
|
-
void send(showNote && trimmed !== '' ? { note: trimmed } : {});
|
|
133
|
-
};
|
|
134
|
-
const reportId = result?.ok === true && typeof result.reportId === 'string' && result.reportId !== '' ? result.reportId : null;
|
|
135
120
|
const quote = quoted(line);
|
|
136
|
-
const
|
|
137
|
-
const title = flow === 'one_tap' ? oneTapTitle : targetName === undefined ? t('player.report.title') : t('player.report.titleNamed', { name: targetName });
|
|
121
|
+
const title = quote !== '' ? t('player.report.titleOneTap') : targetName === undefined ? t('player.report.titleOneTapPlayer') : t('player.report.titleOneTapNamed', { name: targetName });
|
|
138
122
|
const taken = result?.ok === true;
|
|
139
123
|
const refusal = result !== null && !taken ? result : null;
|
|
140
124
|
// After an answer the heading says what happened (a question would be stale), and focus is on it.
|
|
@@ -144,14 +128,19 @@ export function ReportDialog(props) {
|
|
|
144
128
|
const refused = r.refused;
|
|
145
129
|
return typeof refused === 'string' && Object.hasOwn(REFUSED_TEXT, refused) ? REFUSED_TEXT[refused] : 'player.report.refused.unknown';
|
|
146
130
|
};
|
|
147
|
-
const
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
131
|
+
const option = (r) => (_jsx("option", { value: r.id, children: r.label }, r.id));
|
|
132
|
+
const describedBy = [hint === null ? '' : reasonHintId, missing ? missingId : ''].filter((id) => id !== '').join(' ');
|
|
133
|
+
return (_jsx(Portal, { container: container, children: _jsx(Root, { theme: theme, className: className, children: _jsxs(Dialog, { labelledBy: titleId, initialFocus: heading, onEscape: () => !sending.current && onClose(), ...(returnFocusTo === undefined ? {} : { returnFocusTo }), children: [_jsx("h2", { id: titleId, ref: heading, className: "cw-title", tabIndex: -1, children: shownTitle }), _jsx("div", { role: "status", className: "cw-live", children: taken && (_jsxs("p", { className: "cw-result", children: [thanks === '' ? t('player.report.thanks') : thanks, remaining !== null && ` ${t('player.report.remaining', { count: remaining })}`] })) }), result === null ? (_jsxs("form", { onSubmit: submit, noValidate: true, children: [_jsx("p", { className: "cw-body", children: required ? t('player.report.intro') : t('player.report.oneTap.intro') }), quote !== '' && _jsx("blockquote", { className: "cw-quote", children: t('player.report.quote', { line: quote }) }), hasReasons && (_jsxs("div", { className: "cw-field", children: [_jsx("label", { className: "cw-label", htmlFor: reasonId, children: required ? t('player.report.whyRequired') : t('player.report.why') }), _jsxs("select", { id: reasonId, ref: select, className: "cw-select", value: reasonValue, required: required, "aria-invalid": missing || undefined, "aria-describedby": describedBy === '' ? undefined : describedBy, onChange: (e) => {
|
|
134
|
+
const id = e.target.value;
|
|
135
|
+
setReason(id);
|
|
136
|
+
setMissing(false);
|
|
137
|
+
if (read.reasons.find((r) => r.id === id)?.asksNote === true)
|
|
138
|
+
setNoteOpen(true);
|
|
139
|
+
}, children: [_jsx("option", { value: "", children: required ? t('player.report.chooseRequired') : t('player.report.choose') }), named.map((g) => (_jsx("optgroup", { label: g.name, children: g.items.map(option) }, g.name))), bare.map(option)] }), hint !== null && (_jsx("p", { id: reasonHintId, className: "cw-hint", children: hint })), missing && (_jsx("p", { id: missingId, className: "cw-field-error", role: "alert", children: t('player.report.needReason') }))] })), noteShown && (_jsxs("div", { className: "cw-field", children: [_jsx("label", { className: "cw-label", htmlFor: noteId, children: t('player.report.note') }), _jsx("textarea", { id: noteId, ref: noteField, className: "cw-textarea", rows: 3, maxLength: NOTE_MAX, value: note, "aria-describedby": noteHintId, onChange: (e) => setNote(e.target.value) }), _jsx("p", { id: noteHintId, className: "cw-hint", children: t('player.report.noteHint', { max: NOTE_MAX }) })] })), hasReasons && !noteShown && (
|
|
140
|
+
// No aria-expanded: this is a one-way door. It is removed when pressed (the note takes its place) and focus moves to the note.
|
|
141
|
+
_jsx("button", { type: "button", className: "cw-linkbtn", onClick: () => {
|
|
142
|
+
setNoteOpen(true);
|
|
143
|
+
setFocusNote(true);
|
|
144
|
+
}, children: t('player.report.addNote') })), extra !== undefined && extra !== null && extra !== false && _jsx("div", { className: "cw-extra", children: extra }), failure !== null && (_jsxs("p", { className: "cw-error", role: "alert", children: [t('player.report.failed'), " ", errorText(t, failure)] })), _jsxs("div", { className: "cw-actions", children: [_jsx("button", { type: "submit", className: "cw-btn cw-btn--primary", "aria-disabled": busy || undefined, "aria-busy": busy || undefined, children: t('player.report.oneTap.send') }), _jsx("button", { type: "button", className: "cw-btn", "aria-disabled": busy || undefined, onClick: () => !sending.current && onClose(), children: t('player.report.cancel') })] })] })) : (_jsxs(_Fragment, { children: [!taken && (_jsx("p", { className: "cw-error", role: "alert", children: t(refusedKey(refusal)) })), _jsx("div", { className: "cw-actions", children: _jsx("button", { type: "button", className: "cw-btn cw-btn--primary", "aria-disabled": busy || undefined, onClick: () => !sending.current && onClose(), children: t('player.report.close') }) })] }))] }) }) }));
|
|
156
145
|
}
|
|
157
146
|
//# sourceMappingURL=ReportDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportDialog.js","sourceRoot":"","sources":["../../src/ReportDialog.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReportDialog.js","sourceRoot":"","sources":["../../src/ReportDialog.tsx"],"names":[],"mappings":"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"}
|
package/dist/src/i18n.d.ts
CHANGED
|
@@ -59,9 +59,12 @@ export declare const en: {
|
|
|
59
59
|
readonly 'player.restricted.filter.noEnd': "Your chat is off. It does not end on its own. The automatic filter caught a message.";
|
|
60
60
|
readonly 'player.restricted.ended': "Your chat is back on. The restriction ended {when}.";
|
|
61
61
|
readonly 'player.restricted.ref': "Reference {code}";
|
|
62
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
62
63
|
readonly 'player.report.title': "Report a player";
|
|
64
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
63
65
|
readonly 'player.report.titleNamed': "Report {name}";
|
|
64
|
-
readonly 'player.report.intro': "Tell us
|
|
66
|
+
readonly 'player.report.intro': "Tell us why and a moderator will look at it.";
|
|
67
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
65
68
|
readonly 'player.report.legend': "What happened?";
|
|
66
69
|
readonly 'player.report.titleOneTap': "Report this message?";
|
|
67
70
|
readonly 'player.report.titleOneTapNamed': "Report {name}?";
|
|
@@ -71,24 +74,45 @@ export declare const en: {
|
|
|
71
74
|
readonly 'player.report.oneTap.intro': "We will pass it to the moderators. You do not need to say why.";
|
|
72
75
|
readonly 'player.report.oneTap.send': "Report";
|
|
73
76
|
readonly 'player.report.quote': "“{line}”";
|
|
77
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
74
78
|
readonly 'player.report.skip': "Skip and report";
|
|
75
79
|
readonly 'player.report.needReason': "Choose a reason.";
|
|
80
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
76
81
|
readonly 'player.report.needReasonOrSkip': "Choose what happened, or skip.";
|
|
82
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
77
83
|
readonly 'player.report.addReason': "Add a reason";
|
|
84
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
78
85
|
readonly 'player.report.addReasonHint': "This helps, but the moderators decide what it really is. You can add this for a few minutes after you report.";
|
|
86
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
79
87
|
readonly 'player.report.detail.legend': "What was it about?";
|
|
88
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
80
89
|
readonly 'player.report.detail.send': "Add to my report";
|
|
90
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
81
91
|
readonly 'player.report.detail.need': "Choose a reason or write a note.";
|
|
92
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
82
93
|
readonly 'player.report.detail.added': "Added. Thanks.";
|
|
94
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
83
95
|
readonly 'player.report.detail.failed': "We could not add that.";
|
|
96
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
84
97
|
readonly 'player.report.detail.refused.off': "Adding to a report is not available right now.";
|
|
98
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
85
99
|
readonly 'player.report.detail.refused.not_found': "We cannot find that report any more.";
|
|
100
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
86
101
|
readonly 'player.report.detail.refused.not_reporter': "Only the player who sent a report can add to it.";
|
|
102
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
87
103
|
readonly 'player.report.detail.refused.too_late': "It is too late to add to this report. We still have the report.";
|
|
104
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
88
105
|
readonly 'player.report.detail.refused.already_added': "You already added to this report.";
|
|
106
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
89
107
|
readonly 'player.report.detail.refused.reason_unknown': "That reason is not available any more. Your report is still with us.";
|
|
90
|
-
readonly 'player.report.note': "
|
|
108
|
+
readonly 'player.report.note': "Note (optional)";
|
|
109
|
+
readonly 'player.report.addNote': "Add a note";
|
|
110
|
+
readonly 'player.report.why': "Why? (optional)";
|
|
111
|
+
readonly 'player.report.whyRequired': "Why?";
|
|
112
|
+
readonly 'player.report.choose': "Choose a reason (optional)";
|
|
113
|
+
readonly 'player.report.chooseRequired': "Choose a reason";
|
|
91
114
|
readonly 'player.report.noteHint': "A moderator will read this. Up to {max} characters. Do not include passwords or personal details.";
|
|
115
|
+
/** @deprecated unused since 0.1.3; removed in a later minor */
|
|
92
116
|
readonly 'player.report.send': "Send report";
|
|
93
117
|
readonly 'player.report.cancel': "Cancel";
|
|
94
118
|
readonly 'player.report.close': "Close";
|