Skip to content

Commit c5fd02a

Browse files
authored
Merge pull request #2540 from appwrite/fix-dat-813
2 parents 95528de + db465c1 commit c5fd02a

File tree

7 files changed

+34
-29
lines changed

7 files changed

+34
-29
lines changed

src/lib/stores/sdk.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ if (!building) {
111111
scopedConsoleClient.setProject('console');
112112
clientConsole.setEndpoint(endpoint).setProject('console');
113113

114-
clientRealtime.setEndpoint(endpoint).setProject('console');
115114
clientProject.setEndpoint(endpoint).setMode('admin');
116115
clientRealtime.setEndpoint(endpoint).setProject('console');
117116
}

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
expandTabs,
3737
databaseRelatedRowSheetOptions,
3838
rowPermissionSheet,
39+
isWaterfallFromFaker,
3940
type Columns
4041
} from './store';
4142
import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter';
@@ -65,7 +66,6 @@
6566
import { Submit, trackEvent } from '$lib/actions/analytics';
6667
6768
import IndexesSuggestions from '../(suggestions)/indexes.svelte';
68-
import { showIndexesSuggestions, tableColumnSuggestions } from '../(suggestions)';
6969
7070
let editRow: EditRow;
7171
let editRelatedRow: EditRelatedRow;
@@ -76,12 +76,6 @@
7676
let selectedOption: Option['name'] = 'String';
7777
let createMoreColumns = false;
7878
79-
/**
80-
* adding a lot of fake data will trigger the realtime below
81-
* and will keep invalidating the `Dependencies.TABLE` making a lot of API noise!
82-
*/
83-
let isWaterfallFromFaker = false;
84-
8579
let columnCreationHandler: ((response: RealtimeResponse) => void) | null = null;
8680
8781
onMount(() => {
@@ -92,21 +86,9 @@
9286
response.events.includes('databases.*.tables.*.columns.*') ||
9387
response.events.includes('databases.*.tables.*.indexes.*')
9488
) {
95-
if (isWaterfallFromFaker) {
89+
if ($isWaterfallFromFaker) {
9690
columnCreationHandler?.(response);
9791
}
98-
99-
// don't invalidate when -
100-
// 1. from faker
101-
// 2. ai columns creation
102-
// 3. ai indexes creation
103-
if (
104-
!isWaterfallFromFaker &&
105-
!$showIndexesSuggestions &&
106-
!$tableColumnSuggestions.table
107-
) {
108-
invalidate(Dependencies.TABLE);
109-
}
11092
}
11193
});
11294
});
@@ -308,7 +290,7 @@
308290
}
309291
310292
async function createFakeData() {
311-
isWaterfallFromFaker = true;
293+
isWaterfallFromFaker.set(true);
312294
313295
$spreadsheetLoading = true;
314296
$randomDataModalState.show = false;
@@ -386,10 +368,8 @@
386368
$randomDataModalState.value = 25;
387369
}
388370
389-
/* api is too fast! */
390-
// await sleep(1250);
391371
$spreadsheetLoading = false;
392-
isWaterfallFromFaker = false;
372+
isWaterfallFromFaker.set(false);
393373
394374
spreadsheetRenderKey.set(hash(rowIds));
395375
}

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
type ColumnsWidth,
2424
indexes,
2525
isCsvImportInProgress,
26+
isWaterfallFromFaker,
2627
reorderItems,
2728
showCreateIndexSheet
2829
} from '../store';
@@ -55,6 +56,9 @@
5556
import { page } from '$app/state';
5657
import { debounce } from '$lib/helpers/debounce';
5758
import type { PageData } from './$types';
59+
import { realtime } from '$lib/stores/sdk';
60+
import { invalidate } from '$app/navigation';
61+
import { Dependencies } from '$lib/constants';
5862
5963
const {
6064
data
@@ -140,6 +144,16 @@
140144
onMount(() => {
141145
columnsOrder = preferences.getColumnOrder(tableId);
142146
columnsWidth = preferences.getColumnWidths(tableId + '#columns');
147+
148+
return realtime.forProject(page.params.region, ['project', 'console'], async (response) => {
149+
if (
150+
response.events.includes('databases.*.tables.*.columns.*.delete') ||
151+
(response.events.includes('databases.*.tables.*.columns.*.update') &&
152+
!$isWaterfallFromFaker)
153+
) {
154+
await invalidate(Dependencies.TABLE);
155+
}
156+
});
143157
});
144158
145159
function getColumnStatusBadge(status: string): ComponentProps<Badge>['type'] {

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/deleteColumn.svelte

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script lang="ts">
2-
import { invalidate } from '$app/navigation';
32
import { page } from '$app/state';
43
import { addNotification } from '$lib/stores/notifications';
54
import { table } from '../store';
@@ -9,7 +8,6 @@
98
import { isRelationship } from '../rows/store';
109
import Confirm from '$lib/components/confirm.svelte';
1110
import { Layout } from '@appwrite.io/pink-svelte';
12-
import { Dependencies } from '$lib/constants';
1311
import type { Models } from '@appwrite.io/console';
1412
1513
let {
@@ -59,7 +57,6 @@
5957
: `${selectedColumns.length} columns have been deleted`
6058
});
6159
62-
await invalidate(Dependencies.TABLE);
6360
showDelete = false;
6461
selectedColumn = Array.isArray(selectedColumn) ? [] : null;
6562
} catch (e) {

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
import { showCreateColumnSheet } from '../store';
3838
import { isSmallViewport } from '$lib/stores/viewport';
3939
import { page } from '$app/state';
40+
import { realtime } from '$lib/stores/sdk';
41+
import { invalidate } from '$app/navigation';
42+
import { Dependencies } from '$lib/constants';
4043
4144
let {
4245
data
@@ -96,6 +99,12 @@
9699
97100
onMount(() => {
98101
columnsWidth = preferences.getColumnWidths(tableId + '#indexes');
102+
103+
return realtime.forProject(page.params.region, ['project', 'console'], (response) => {
104+
if (response.events.includes('databases.*.tables.*.indexes.*')) {
105+
invalidate(Dependencies.TABLE);
106+
}
107+
});
99108
});
100109
101110
function getColumnStatusBadge(status: string): ComponentProps<Badge>['type'] {

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@
475475
message: 'Column deleted'
476476
});
477477
478-
invalidate(Dependencies.TABLE);
478+
await invalidate(Dependencies.TABLE);
479479
480480
$databaseColumnSheetOptions.column = null;
481481
} catch (error) {

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ export const table = derived(page, ($page) => $page.data.table as Table);
2828
export const columns = derived(page, ($page) => $page.data.table.columns as Columns[]);
2929
export const indexes = derived(page, ($page) => $page.data.table.indexes as Models.ColumnIndex[]);
3030

31+
/**
32+
* adding a lot of fake data will trigger the realtime below
33+
* and will keep invalidating the `Dependencies.TABLE` making a lot of API noise!
34+
*/
35+
export const isWaterfallFromFaker = writable(false);
36+
3137
export const tableColumns = writable<Column[]>([]);
3238

3339
export const isCsvImportInProgress = writable(false);

0 commit comments

Comments
 (0)