From b3c4697efe5ff2b76c322c5762162bfcf6dc5720 Mon Sep 17 00:00:00 2001 From: TzeYiing Date: Thu, 28 Apr 2022 18:16:19 +0200 Subject: [PATCH] move filtering logic to ProjectContentStore --- studio/pages/project/[ref]/logs-explorer/saved.tsx | 3 +-- studio/stores/content/ProjectContentStore.ts | 11 +++++++++++ studio/stores/projectContentStore.ts | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/studio/pages/project/[ref]/logs-explorer/saved.tsx b/studio/pages/project/[ref]/logs-explorer/saved.tsx index 2f9a59cdca0..739b780ce5c 100644 --- a/studio/pages/project/[ref]/logs-explorer/saved.tsx +++ b/studio/pages/project/[ref]/logs-explorer/saved.tsx @@ -22,7 +22,6 @@ export const LogsSavedPage: NextPage = () => { } }, [ui.selectedProject]) - const contentList = content.list() if (content.isLoading) { return ( @@ -30,8 +29,8 @@ export const LogsSavedPage: NextPage = () => { ) } + const saved = content.logSqlSnippets() - const saved: UserContent[] = (contentList?.[0] || []).filter((content: UserContent)=> content.type === 'log_sql') return (
diff --git a/studio/stores/content/ProjectContentStore.ts b/studio/stores/content/ProjectContentStore.ts index cdf5abcd506..78c4ea3f40f 100644 --- a/studio/stores/content/ProjectContentStore.ts +++ b/studio/stores/content/ProjectContentStore.ts @@ -9,6 +9,7 @@ import { API_URL } from 'lib/constants' // [Joshen] This will be the new ProjectContentStore // but use the one under the stores folder projectContentStore first while we transition +type CustomFilter = (content: UserContent) => boolean export interface IProjectContentStore { isLoading: boolean isInitialized: boolean @@ -20,6 +21,7 @@ export interface IProjectContentStore { list: (filter?: any) => any[] reports: (filter?: any) => any[] sqlSnippets: (filter?: any) => any[] + logSqlSnippets: (filter?: CustomFilter) => UserContent[] } export default class ProjectContentStore implements IProjectContentStore { @@ -133,6 +135,15 @@ export default class ProjectContentStore implements IProjectContentStore { } } + logSqlSnippets(filter?: CustomFilter) { + let arr = (Object.values(this.data)[0] as any || []) as UserContent[] + let snippets = arr.filter(c => c.type === 'log_sql') + if (filter) { + snippets = snippets.filter(filter) + } + return snippets.sort((a, b) => a.name.localeCompare(b.name)) + } + // @ts-ignore async create(payload: any) { try { diff --git a/studio/stores/projectContentStore.ts b/studio/stores/projectContentStore.ts index f22168a2dbb..2ad1e7b7c7c 100644 --- a/studio/stores/projectContentStore.ts +++ b/studio/stores/projectContentStore.ts @@ -10,6 +10,7 @@ import { API_URL } from 'lib/constants' * import { useProjectContentStore } from 'stores/userContent/projectContentStore' * const contentStore = useProjectContentStore(projectRef) * contentStore.load() // inside usEffect() + * @deprecated use content store on RootStore instead. */ let store: any = null let projectRef: any = null @@ -32,6 +33,7 @@ interface UserContentMap { /** * MobX Store + * @deprecated */ export default class ProjectContent { STATES = {