🐛 Fix deprecated zustand dependencies

This commit is contained in:
Meier Lukas
2023-08-09 21:41:57 +02:00
parent d9eec612d8
commit db8d88affc
5 changed files with 94 additions and 130 deletions

View File

@@ -360,54 +360,6 @@
}
}
}
},
{
"id": "135b7adf-0616-481f-991e-a9035d66b924",
"type": "torrents-status",
"properties": {
"displayCompletedTorrents": true,
"displayStaleTorrents": true,
"labelFilterIsWhitelist": true,
"labelFilter": []
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"sm": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 2,
"height": 2
}
},
"md": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 2,
"height": 2
}
},
"lg": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 2,
"height": 2
}
}
}
}
],
"settings": {

View File

@@ -1,11 +1,14 @@
import { create } from 'zustand';
import { createWithEqualityFn } from 'zustand/traditional';
interface EditModeState {
enabled: boolean;
toggleEditMode: () => void;
}
export const useEditModeStore = create<EditModeState>((set) => ({
enabled: false,
toggleEditMode: () => set((state) => ({ enabled: !state.enabled })),
}));
export const useEditModeStore = createWithEqualityFn<EditModeState>(
(set) => ({
enabled: false,
toggleEditMode: () => set((state) => ({ enabled: !state.enabled })),
}),
Object.is
);

View File

@@ -1,14 +1,17 @@
import { create } from 'zustand';
import { createWithEqualityFn } from 'zustand/traditional';
import { useConfigContext } from '../../../../config/provider';
import { GridstackBreakpoints } from '../../../../constants/gridstack-breakpoints';
export const useGridstackStore = create<GridstackStoreType>((set, get) => ({
mainAreaWidth: null,
currentShapeSize: null,
setMainAreaWidth: (w: number) =>
set((v) => ({ ...v, mainAreaWidth: w, currentShapeSize: getCurrentShapeSize(w) })),
}));
export const useGridstackStore = createWithEqualityFn<GridstackStoreType>(
(set, get) => ({
mainAreaWidth: null,
currentShapeSize: null,
setMainAreaWidth: (w: number) =>
set((v) => ({ ...v, mainAreaWidth: w, currentShapeSize: getCurrentShapeSize(w) })),
}),
Object.is
);
interface GridstackStoreType {
mainAreaWidth: null | number;

View File

@@ -1,74 +1,77 @@
import { create } from 'zustand';
import { createWithEqualityFn } from 'zustand/traditional';
import { trcpProxyClient } from '~/utils/api';
import { ConfigType } from '../types/config';
export const useConfigStore = create<UseConfigStoreType>((set, get) => ({
configs: [],
initConfig: (name, config, increaseVersion) => {
set((old) => ({
...old,
configs: [
...old.configs.filter((x) => x.value.configProperties?.name !== name),
{ increaseVersion, value: config },
],
}));
},
addConfig: async (name: string, config: ConfigType) => {
set((old) => ({
...old,
configs: [
...old.configs.filter((x) => x.value.configProperties.name !== name),
{ value: config, increaseVersion: () => {} },
],
}));
},
removeConfig: (name: string) => {
set((old) => ({
...old,
configs: old.configs.filter((x) => x.value.configProperties.name !== name),
}));
},
updateConfig: async (
name,
updateCallback: (previous: ConfigType) => ConfigType,
shouldRegenerateGridstack = false,
shouldSaveConfigToFileSystem = false
) => {
const { configs } = get();
const currentConfig = configs.find((x) => x.value.configProperties.name === name);
if (!currentConfig) {
return;
}
// copies the value of currentConfig and creates a non reference object named previousConfig
const previousConfig: ConfigType = JSON.parse(JSON.stringify(currentConfig.value));
export const useConfigStore = createWithEqualityFn<UseConfigStoreType>(
(set, get) => ({
configs: [],
initConfig: (name, config, increaseVersion) => {
set((old) => ({
...old,
configs: [
...old.configs.filter((x) => x.value.configProperties?.name !== name),
{ increaseVersion, value: config },
],
}));
},
addConfig: async (name: string, config: ConfigType) => {
set((old) => ({
...old,
configs: [
...old.configs.filter((x) => x.value.configProperties.name !== name),
{ value: config, increaseVersion: () => {} },
],
}));
},
removeConfig: (name: string) => {
set((old) => ({
...old,
configs: old.configs.filter((x) => x.value.configProperties.name !== name),
}));
},
updateConfig: async (
name,
updateCallback: (previous: ConfigType) => ConfigType,
shouldRegenerateGridstack = false,
shouldSaveConfigToFileSystem = false
) => {
const { configs } = get();
const currentConfig = configs.find((x) => x.value.configProperties.name === name);
if (!currentConfig) {
return;
}
// copies the value of currentConfig and creates a non reference object named previousConfig
const previousConfig: ConfigType = JSON.parse(JSON.stringify(currentConfig.value));
const updatedConfig = updateCallback(currentConfig.value);
const updatedConfig = updateCallback(currentConfig.value);
set((old) => ({
...old,
configs: [
...old.configs.filter((x) => x.value.configProperties.name !== name),
{ value: updatedConfig, increaseVersion: currentConfig.increaseVersion },
],
}));
set((old) => ({
...old,
configs: [
...old.configs.filter((x) => x.value.configProperties.name !== name),
{ value: updatedConfig, increaseVersion: currentConfig.increaseVersion },
],
}));
if (
(typeof shouldRegenerateGridstack === 'boolean' && shouldRegenerateGridstack) ||
(typeof shouldRegenerateGridstack === 'function' &&
shouldRegenerateGridstack(previousConfig, updatedConfig))
) {
currentConfig.increaseVersion();
}
if (
(typeof shouldRegenerateGridstack === 'boolean' && shouldRegenerateGridstack) ||
(typeof shouldRegenerateGridstack === 'function' &&
shouldRegenerateGridstack(previousConfig, updatedConfig))
) {
currentConfig.increaseVersion();
}
if (shouldSaveConfigToFileSystem) {
trcpProxyClient.config.save.mutate({
name,
config: updatedConfig,
});
}
},
}));
if (shouldSaveConfigToFileSystem) {
trcpProxyClient.config.save.mutate({
name,
config: updatedConfig,
});
}
},
}),
Object.is
);
interface UseConfigStoreType {
configs: { increaseVersion: () => void; value: ConfigType }[];

View File

@@ -1,4 +1,4 @@
import { create } from 'zustand';
import { createWithEqualityFn } from 'zustand/traditional';
import { ServerSidePackageAttributesType } from '../../server/getPackageVersion';
@@ -7,9 +7,12 @@ interface PackageAttributesState {
setInitialPackageAttributes: (attributes: ServerSidePackageAttributesType) => void;
}
export const usePackageAttributesStore = create<PackageAttributesState>((set) => ({
attributes: { packageVersion: undefined, environment: 'test', dependencies: {} },
setInitialPackageAttributes(attributes) {
set((state) => ({ ...state, attributes }));
},
}));
export const usePackageAttributesStore = createWithEqualityFn<PackageAttributesState>(
(set) => ({
attributes: { packageVersion: undefined, environment: 'test', dependencies: {} },
setInitialPackageAttributes(attributes) {
set((state) => ({ ...state, attributes }));
},
}),
Object.is
);