Skip to content

Commit bffd04c

Browse files
committed
feat(pages): add ability to show deleted pages in group settings
1 parent 3581ee9 commit bffd04c

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

apps/client/src/layouts/PagesLayout/RightSidebar/PageProperties/GroupSettingsDialog/GroupSettingsDialog.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ provide('groupId', props.groupId);
237237
const dialogRef = ref() as Ref<InstanceType<typeof CustomDialog>>;
238238
provide('dialog', dialogRef);
239239
240-
const pageIds = ref<string[]>([]);
240+
const pageIds = ref<Set<string>>(new Set());
241241
const hasMorePages = ref(true);
242242
provide('pageIds', pageIds);
243243
provide('hasMorePages', hasMorePages);

apps/client/src/layouts/PagesLayout/RightSidebar/PageProperties/GroupSettingsDialog/PagesTab/PagesTab.vue

+28-5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
:disable="finalSelectedPageIds.length === 0"
1616
@click="deselectAll()"
1717
/>
18+
19+
<Gap style="width: 26px" />
20+
21+
<Checkbox
22+
label="Show deleted pages"
23+
v-model="showDeletedPages"
24+
/>
1825
</div>
1926

2027
<Gap style="height: 16px" />
@@ -31,6 +38,17 @@
3138
@unselect="(pageId) => baseSelectedPageIds.delete(pageId)"
3239
style="max-height: 100%; border-radius: 10px; background-color: #383838"
3340
class="overflow-auto"
41+
:item-props="
42+
(pageId) => ({
43+
style: {
44+
color:
45+
realtimeCtx.hget('page', pageId, 'permanent-deletion-date') !=
46+
null
47+
? '#ff9696'
48+
: undefined,
49+
},
50+
})
51+
"
3452
>
3553
<template #item="{ itemId: groupPageId }">
3654
<q-item-section>
@@ -132,12 +150,15 @@ const groupId = inject<string>('groupId')!;
132150
133151
const realtimeCtx = inject<RealtimeContext>('realtimeCtx')!;
134152
135-
const basePageIds = inject<Ref<string[]>>('pageIds')!;
153+
const basePageIds = inject<Ref<Set<string>>>('pageIds')!;
154+
136155
const finalPageIds = computed(() =>
137-
basePageIds.value.filter(
156+
Array.from(basePageIds.value).filter(
138157
(pageId) =>
139158
realtimeCtx.hget('page', pageId, 'exists') &&
140-
realtimeCtx.hget('page', pageId, 'permanent-deletion-date') == null,
159+
(realtimeCtx.hget('page', pageId, 'permanent-deletion-date') == null ||
160+
(showDeletedPages.value &&
161+
realtimeCtx.hget('page', pageId, 'permanent-deletion-date') != null)),
141162
),
142163
);
143164
@@ -148,6 +169,8 @@ const finalSelectedPageIds = computed(() =>
148169
finalPageIds.value.filter((pageId) => baseSelectedPageIds.value.has(pageId)),
149170
);
150171
172+
const showDeletedPages = ref(false);
173+
151174
function selectAll() {
152175
for (const pageId of finalPageIds.value) {
153176
baseSelectedPageIds.value.add(pageId);
@@ -164,10 +187,10 @@ async function onLoad(index: number, done: (stop?: boolean) => void) {
164187
const response = await trpcClient.groups.getPages.query({
165188
groupId,
166189
167-
lastPageId: basePageIds.value.at(-1),
190+
lastPageId: Array.from(basePageIds.value).at(-1),
168191
});
169192
170-
basePageIds.value.push(...response.pageIds);
193+
response.pageIds.forEach((pageId) => basePageIds.value.add(pageId));
171194
hasMorePages.value = response.hasMore;
172195
} catch (error) {
173196
handleError(error);

0 commit comments

Comments
 (0)