tangled
alpha
login
or
join now
leaflet.pub
/
leaflet
289
fork
atom
a tool for shared writing and social publishing
289
fork
atom
overview
issues
28
pulls
pipelines
handle logged out and non-pub owner cases
awarm.space
3 months ago
c5913f0b
80462233
+73
-5
3 changed files
expand all
collapse all
unified
split
app
(home-pages)
home
LeafletList
LeafletInfo.tsx
LeafletOptions.tsx
lish
[did]
[publication]
dashboard
PublishedPostsLists.tsx
+1
app/(home-pages)/home/LeafletList/LeafletInfo.tsx
···
50
50
document_uri={props.document_uri}
51
51
shareLink={`/${props.token.id}`}
52
52
archived={props.archived}
53
53
+
loggedIn={props.loggedIn}
53
54
/>
54
55
</div>
55
56
</div>
+71
-5
app/(home-pages)/home/LeafletList/LeafletOptions.tsx
···
22
22
} from "app/lish/[did]/[publication]/dashboard/deletePost";
23
23
import { ShareButton } from "components/ShareOptions";
24
24
import { ShareSmall } from "components/Icons/ShareSmall";
25
25
+
import { HideSmall } from "components/Icons/HideSmall";
26
26
+
import { hideDoc } from "../storage";
25
27
26
28
import { PermissionToken } from "src/replicache";
27
29
import {
···
40
42
document_uri?: string;
41
43
shareLink: string;
42
44
archived?: boolean | null;
45
45
+
loggedIn?: boolean;
43
46
}) => {
44
47
let [state, setState] = useState<"normal" | "template" | "areYouSure">(
45
48
"normal",
46
49
);
47
50
let [open, setOpen] = useState(false);
51
51
+
let { identity } = useIdentityData();
52
52
+
let isPublicationOwner =
53
53
+
!!identity?.atp_did && !!props.document_uri?.includes(identity.atp_did);
48
54
return (
49
55
<>
50
56
<Menu
···
67
73
}
68
74
>
69
75
{state === "normal" ? (
70
70
-
props.document_uri ? (
76
76
+
!props.loggedIn ? (
77
77
+
<LoggedOutOptions
78
78
+
leaflet={props.leaflet}
79
79
+
isTemplate={props.isTemplate}
80
80
+
setState={setState}
81
81
+
shareLink={props.shareLink}
82
82
+
/>
83
83
+
) : props.document_uri && isPublicationOwner ? (
71
84
<PublishedPostOptions
72
85
setState={setState}
73
86
document_uri={props.document_uri}
···
160
173
if (item) item.archived = false;
161
174
});
162
175
mutatePublicationData(mutatePub, (data) => {
163
163
-
let item = data.publication?.leaflets_in_publications.find(
164
164
-
(l) => l.permission_tokens?.id === props.leaflet.id,
165
165
-
);
176
176
+
let item =
177
177
+
data.publication?.leaflets_in_publications.find(
178
178
+
(l) => l.permission_tokens?.id === props.leaflet.id,
179
179
+
);
166
180
if (item) item.archived = false;
167
181
});
168
182
await unarchivePost(props.leaflet.id);
···
220
234
);
221
235
};
222
236
237
237
+
const LoggedOutOptions = (props: {
238
238
+
leaflet: PermissionToken;
239
239
+
isTemplate?: boolean;
240
240
+
setState: (s: "template" | "areYouSure") => void;
241
241
+
shareLink: string;
242
242
+
}) => {
243
243
+
let toaster = useToaster();
244
244
+
return (
245
245
+
<>
246
246
+
<ShareButton
247
247
+
text={
248
248
+
<div className="flex gap-2">
249
249
+
<ShareSmall />
250
250
+
Copy Edit Link
251
251
+
</div>
252
252
+
}
253
253
+
subtext=""
254
254
+
smokerText="Link copied!"
255
255
+
id="get-link"
256
256
+
link={`/${props.shareLink}`}
257
257
+
/>
258
258
+
<TemplateOptions
259
259
+
leaflet={props.leaflet}
260
260
+
setState={props.setState}
261
261
+
isTemplate={props.isTemplate}
262
262
+
/>
263
263
+
<hr className="border-border-light" />
264
264
+
<MenuItem
265
265
+
onSelect={() => {
266
266
+
hideDoc(props.leaflet);
267
267
+
toaster({
268
268
+
content: <div className="font-bold">Removed from Home!</div>,
269
269
+
type: "success",
270
270
+
});
271
271
+
}}
272
272
+
>
273
273
+
<HideSmall />
274
274
+
Remove from Home
275
275
+
</MenuItem>
276
276
+
<MenuItem
277
277
+
onSelect={(e) => {
278
278
+
e.preventDefault();
279
279
+
props.setState("areYouSure");
280
280
+
}}
281
281
+
>
282
282
+
<DeleteSmall />
283
283
+
Delete Forever
284
284
+
</MenuItem>
285
285
+
</>
286
286
+
);
287
287
+
};
288
288
+
223
289
const PublishedPostOptions = (props: {
224
290
setState: (s: "areYouSure") => void;
225
291
document_uri: string;
···
238
304
}
239
305
smokerText="Link copied!"
240
306
id="get-link"
241
241
-
link={`/${props.shareLink}}`}
307
307
+
link={`${props.shareLink}`}
242
308
/>
243
309
244
310
<hr className="border-border-light" />
+1
app/lish/[did]/[publication]/dashboard/PublishedPostsLists.tsx
···
97
97
leaflet={leaflet?.permission_tokens!}
98
98
document_uri={doc.documents.uri}
99
99
shareLink={postLink}
100
100
+
loggedIn={true}
100
101
/>
101
102
</>
102
103
)}