mirror of
https://github.com/rowyio/rowy.git
synced 2025-12-29 00:16:39 +01:00
fix: Subtable Filter Refresh Bug Fixed
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user