mirror of
https://github.com/rowyio/rowy.git
synced 2025-12-29 00:16:39 +01:00
@@ -42,6 +42,7 @@ import { analytics, logEvent } from "@src/analytics";
|
||||
import type { TableFilter } from "@src/types/table";
|
||||
import { generateId } from "@src/utils/table";
|
||||
import { useFilterUrl } from "./useFilterUrl";
|
||||
import { isEqual } from "lodash-es";
|
||||
|
||||
const shouldDisableApplyButton = (queries: any) => {
|
||||
for (let query of queries) {
|
||||
@@ -255,10 +256,7 @@ export default function Filters() {
|
||||
// If the filter in URL is not the same as currently applied local filter
|
||||
// then update the user filter.
|
||||
useEffect(() => {
|
||||
if (
|
||||
filtersUrl &&
|
||||
JSON.stringify(filtersUrl) !== JSON.stringify(appliedFilters)
|
||||
) {
|
||||
if (filtersUrl && !isEqual(filtersUrl, appliedFilters)) {
|
||||
setUserFilters(filtersUrl);
|
||||
setOverrideTableFilters(true);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { tableFiltersAtom, tableScope } from "@src/atoms/tableScope";
|
||||
import { TableFilter } from "@src/types/table";
|
||||
import { useAtom } from "jotai";
|
||||
import { isEqual } from "lodash-es";
|
||||
import { useSnackbar } from "notistack";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect } from "react";
|
||||
import { useSearchParams } from "react-router-dom";
|
||||
|
||||
function isTableFilter(filter: any): filter is TableFilter {
|
||||
@@ -16,7 +19,7 @@ function isTableFilter(filter: any): filter is TableFilter {
|
||||
export function useFilterUrl() {
|
||||
const [searchParams, setSearchParams] = useSearchParams();
|
||||
const { enqueueSnackbar } = useSnackbar();
|
||||
const [filters, setFilters] = useState<TableFilter[] | null>(null);
|
||||
const [filters, setFilters] = useAtom(tableFiltersAtom, tableScope);
|
||||
|
||||
// Fetch filter from URL and update user filter
|
||||
useEffect(() => {
|
||||
@@ -32,8 +35,7 @@ export function useFilterUrl() {
|
||||
for (const _filter of _filters) {
|
||||
if (!isTableFilter(_filter)) throw new Error("Invalid Filter");
|
||||
}
|
||||
|
||||
setFilters(_filters);
|
||||
if (!isEqual(_filters, filters)) setFilters(_filters);
|
||||
} catch (err) {
|
||||
enqueueSnackbar("Oops, filter in URL is incorrect!!!", {
|
||||
variant: "error",
|
||||
|
||||
@@ -4,7 +4,8 @@ import { getAuth, connectAuthEmulator } from "firebase/auth";
|
||||
import {
|
||||
initializeFirestore,
|
||||
connectFirestoreEmulator,
|
||||
enableMultiTabIndexedDbPersistence,
|
||||
persistentLocalCache,
|
||||
persistentMultipleTabManager,
|
||||
} from "firebase/firestore";
|
||||
import { getStorage, connectStorageEmulator } from "firebase/storage";
|
||||
import { getFunctions } from "firebase/functions";
|
||||
@@ -59,10 +60,12 @@ export const firebaseAuthAtom = atom((get) => {
|
||||
export const firebaseDbAtom = atom((get) => {
|
||||
const db = initializeFirestore(get(firebaseAppAtom), {
|
||||
ignoreUndefinedProperties: true,
|
||||
localCache: persistentLocalCache({
|
||||
tabManager: persistentMultipleTabManager(),
|
||||
}),
|
||||
});
|
||||
if (!(window as any).firebaseDbStarted) {
|
||||
if (envConnectEmulators) connectFirestoreEmulator(db, "localhost", 9299);
|
||||
else enableMultiTabIndexedDbPersistence(db);
|
||||
(window as any).firebaseDbStarted = true;
|
||||
}
|
||||
return db;
|
||||
|
||||
Reference in New Issue
Block a user