@streamplace/components 0.7.29 → 0.7.30
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.
|
@@ -25,6 +25,7 @@ exports.ModView = (0, react_1.forwardRef)(() => {
|
|
|
25
25
|
const setReportModalOpen = (0, player_store_1.usePlayerStore)((x) => x.setReportModalOpen);
|
|
26
26
|
const setReportSubject = (0, player_store_1.usePlayerStore)((x) => x.setReportSubject);
|
|
27
27
|
const setModMessage = (0, player_store_1.usePlayerStore)((x) => x.setModMessage);
|
|
28
|
+
const deleteChatMessage = (0, livestream_store_1.useDeleteChatMessage)();
|
|
28
29
|
// get the channel did
|
|
29
30
|
const channelId = (0, player_store_1.usePlayerStore)((state) => state.src);
|
|
30
31
|
// get the logged in user's identity
|
|
@@ -77,23 +78,37 @@ exports.ModView = (0, react_1.forwardRef)(() => {
|
|
|
77
78
|
? "Blocking..."
|
|
78
79
|
: `Block user @${message.author.handle} from this channel` })) })] })), (0, jsx_runtime_1.jsxs)(ui_1.DropdownMenuGroup, { title: `User actions`, children: [(0, jsx_runtime_1.jsx)(ui_1.DropdownMenuItem, { onPress: () => {
|
|
79
80
|
react_native_1.Linking.openURL(`https://${BSKY_FRONTEND_DOMAIN}/profile/${message.author.handle}`);
|
|
80
|
-
}, children: (0, jsx_runtime_1.jsxs)(ui_1.Text, { color: "primary", children: ["View user on ", BSKY_FRONTEND_DOMAIN] }) }), message.author.did === agent?.did && ((0, jsx_runtime_1.jsx)(DeleteButton, { message: message })), message.author.did !== agent?.did && ((0, jsx_runtime_1.jsx)(ReportButton, { message: message, setReportModalOpen: setReportModalOpen, setReportSubject: setReportSubject }))] })] })) })] }));
|
|
81
|
+
}, children: (0, jsx_runtime_1.jsxs)(ui_1.Text, { color: "primary", children: ["View user on ", BSKY_FRONTEND_DOMAIN] }) }), message.author.did === agent?.did && ((0, jsx_runtime_1.jsx)(DeleteButton, { message: message, deleteChatMessage: deleteChatMessage })), message.author.did !== agent?.did && ((0, jsx_runtime_1.jsx)(ReportButton, { message: message, setReportModalOpen: setReportModalOpen, setReportSubject: setReportSubject }))] })] })) })] }));
|
|
81
82
|
});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
var DeleteState;
|
|
84
|
+
(function (DeleteState) {
|
|
85
|
+
DeleteState[DeleteState["None"] = 0] = "None";
|
|
86
|
+
DeleteState[DeleteState["Confirmed"] = 1] = "Confirmed";
|
|
87
|
+
DeleteState[DeleteState["Deleting"] = 2] = "Deleting";
|
|
88
|
+
})(DeleteState || (DeleteState = {}));
|
|
89
|
+
function DeleteButton({ message, deleteChatMessage, }) {
|
|
90
|
+
const [confirming, setConfirming] = (0, react_1.useState)(DeleteState.None);
|
|
85
91
|
const { onOpenChange } = (0, dropdown_menu_1.useRootContext)();
|
|
86
92
|
return ((0, jsx_runtime_1.jsx)(ui_1.DropdownMenuItem, { onPress: () => {
|
|
87
93
|
if (!message)
|
|
88
94
|
return;
|
|
89
95
|
if (!confirming) {
|
|
90
|
-
setConfirming(
|
|
96
|
+
setConfirming(DeleteState.Confirmed);
|
|
91
97
|
return;
|
|
92
98
|
}
|
|
99
|
+
if (confirming === DeleteState.Confirmed) {
|
|
100
|
+
setConfirming(DeleteState.Deleting);
|
|
101
|
+
}
|
|
93
102
|
deleteChatMessage(message.uri).then(() => {
|
|
103
|
+
// wait ~a second before resetting state to allow deletion to take effect
|
|
104
|
+
setTimeout(() => setConfirming(DeleteState.None), 1000);
|
|
94
105
|
onOpenChange?.(false);
|
|
95
106
|
});
|
|
96
|
-
}, children: (0, jsx_runtime_1.jsx)(ui_1.Text, { color: "destructive", children: confirming
|
|
107
|
+
}, children: (0, jsx_runtime_1.jsx)(ui_1.Text, { color: "destructive", children: confirming === DeleteState.Confirmed
|
|
108
|
+
? "Are you sure? Click again to confirm."
|
|
109
|
+
: confirming === DeleteState.Deleting
|
|
110
|
+
? "Deleting..."
|
|
111
|
+
: "Delete message" }) }));
|
|
97
112
|
}
|
|
98
113
|
function ReportButton({ message, setReportModalOpen, setReportSubject, }) {
|
|
99
114
|
const { onOpenChange } = (0, dropdown_menu_1.useRootContext)();
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamplace/components",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.30",
|
|
4
4
|
"description": "Streamplace React (Native) Components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "src/index.tsx",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"start": "tsc --watch --preserveWatchOutput",
|
|
55
55
|
"prepare": "tsc"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "c8a2e2822dcdc429221beb918925866e9de7b838"
|
|
58
58
|
}
|
|
@@ -49,6 +49,7 @@ export const ModView = forwardRef<ModViewRef, ModViewProps>(() => {
|
|
|
49
49
|
const setReportModalOpen = usePlayerStore((x) => x.setReportModalOpen);
|
|
50
50
|
const setReportSubject = usePlayerStore((x) => x.setReportSubject);
|
|
51
51
|
const setModMessage = usePlayerStore((x) => x.setModMessage);
|
|
52
|
+
const deleteChatMessage = useDeleteChatMessage();
|
|
52
53
|
|
|
53
54
|
// get the channel did
|
|
54
55
|
const channelId = usePlayerStore((state) => state.src);
|
|
@@ -174,7 +175,10 @@ export const ModView = forwardRef<ModViewRef, ModViewProps>(() => {
|
|
|
174
175
|
<Text color="primary">View user on {BSKY_FRONTEND_DOMAIN}</Text>
|
|
175
176
|
</DropdownMenuItem>
|
|
176
177
|
{message.author.did === agent?.did && (
|
|
177
|
-
<DeleteButton
|
|
178
|
+
<DeleteButton
|
|
179
|
+
message={message}
|
|
180
|
+
deleteChatMessage={deleteChatMessage}
|
|
181
|
+
/>
|
|
178
182
|
)}
|
|
179
183
|
{message.author.did !== agent?.did && (
|
|
180
184
|
<ReportButton
|
|
@@ -191,29 +195,45 @@ export const ModView = forwardRef<ModViewRef, ModViewProps>(() => {
|
|
|
191
195
|
);
|
|
192
196
|
});
|
|
193
197
|
|
|
198
|
+
enum DeleteState {
|
|
199
|
+
None,
|
|
200
|
+
Confirmed,
|
|
201
|
+
Deleting,
|
|
202
|
+
}
|
|
203
|
+
|
|
194
204
|
export function DeleteButton({
|
|
195
205
|
message,
|
|
206
|
+
deleteChatMessage,
|
|
196
207
|
}: {
|
|
197
208
|
message: ChatMessageViewHydrated;
|
|
209
|
+
deleteChatMessage: (uri: string) => Promise<any>;
|
|
198
210
|
}) {
|
|
199
|
-
const
|
|
200
|
-
const [confirming, setConfirming] = useState(false);
|
|
211
|
+
const [confirming, setConfirming] = useState<DeleteState>(DeleteState.None);
|
|
201
212
|
const { onOpenChange } = useRootContext();
|
|
202
213
|
return (
|
|
203
214
|
<DropdownMenuItem
|
|
204
215
|
onPress={() => {
|
|
205
216
|
if (!message) return;
|
|
206
217
|
if (!confirming) {
|
|
207
|
-
setConfirming(
|
|
218
|
+
setConfirming(DeleteState.Confirmed);
|
|
208
219
|
return;
|
|
209
220
|
}
|
|
221
|
+
if (confirming === DeleteState.Confirmed) {
|
|
222
|
+
setConfirming(DeleteState.Deleting);
|
|
223
|
+
}
|
|
210
224
|
deleteChatMessage(message.uri).then(() => {
|
|
225
|
+
// wait ~a second before resetting state to allow deletion to take effect
|
|
226
|
+
setTimeout(() => setConfirming(DeleteState.None), 1000);
|
|
211
227
|
onOpenChange?.(false);
|
|
212
228
|
});
|
|
213
229
|
}}
|
|
214
230
|
>
|
|
215
231
|
<Text color="destructive">
|
|
216
|
-
{confirming
|
|
232
|
+
{confirming === DeleteState.Confirmed
|
|
233
|
+
? "Are you sure? Click again to confirm."
|
|
234
|
+
: confirming === DeleteState.Deleting
|
|
235
|
+
? "Deleting..."
|
|
236
|
+
: "Delete message"}
|
|
217
237
|
</Text>
|
|
218
238
|
</DropdownMenuItem>
|
|
219
239
|
);
|