fix: cache with duplicated data

This commit is contained in:
Divlo
2022-08-30 21:30:06 +02:00
parent 3d185bf044
commit a068d31d14
22 changed files with 98 additions and 95 deletions

View File

@ -1,4 +1,4 @@
import { createContext, useContext, useEffect } from 'react'
import { createContext, useContext, useEffect, useMemo } from 'react'
import { useRouter } from 'next/router'
import { NextPage, usePagination } from '../hooks/usePagination'
@ -28,7 +28,9 @@ export const ChannelsProvider: React.FC<
const router = useRouter()
const { authentication } = useAuthentication()
const cacheKey: CacheKey = `${path.guildId}-${CHANNELS_CACHE_KEY}`
const cacheKey = useMemo<CacheKey>(() => {
return `${path.guildId}-${CHANNELS_CACHE_KEY}`
}, [path.guildId])
const {
items: channels,
@ -75,7 +77,7 @@ export const ChannelsProvider: React.FC<
export const useChannels = (): Channels => {
const channels = useContext(ChannelsContext)
if (channels === defaultChannelsContext) {
throw new Error('useChannels must be used within ChannelsProvider')
throw new Error('`useChannels` must be used within `ChannelsProvider`')
}
return channels
}

View File

@ -11,9 +11,7 @@ export interface GuildMember {
member: Member
}
export interface GuildMemberResult extends GuildMember {
setGuildMember: React.Dispatch<React.SetStateAction<GuildMember>>
}
export interface GuildMemberResult extends GuildMember {}
export interface GuildMemberProps {
guildMember: GuildMember
@ -79,8 +77,7 @@ export const GuildMemberProvider: React.FC<
return (
<GuildMemberContext.Provider
value={{
...guildMember,
setGuildMember
...guildMember
}}
>
{children}
@ -91,7 +88,9 @@ export const GuildMemberProvider: React.FC<
export const useGuildMember = (): GuildMemberResult => {
const guildMember = useContext(GuildMemberContext)
if (guildMember === defaultGuildMemberContext) {
throw new Error('useGuildMember must be used within GuildMemberProvider')
throw new Error(
'`useGuildMember` must be used within `GuildMemberProvider`'
)
}
return guildMember
}

View File

@ -62,7 +62,7 @@ export const GuildsProvider: React.FC<React.PropsWithChildren<{}>> = (
export const useGuilds = (): Guilds => {
const guilds = useContext(GuildsContext)
if (guilds === defaultGuildsContext) {
throw new Error('useGuilds must be used within GuildsProvider')
throw new Error('`useGuilds` must be used within `GuildsProvider`')
}
return guilds
}

View File

@ -1,4 +1,4 @@
import { createContext, useContext, useEffect } from 'react'
import { createContext, useContext, useEffect, useMemo } from 'react'
import { NextPage, usePagination } from '../hooks/usePagination'
import { useAuthentication } from '../tools/authentication'
@ -28,7 +28,9 @@ export const MembersProviders: React.FC<
const { authentication } = useAuthentication()
const cacheKey: CacheKey = `${path.guildId}-${MEMBERS_CACHE_KEY}`
const cacheKey = useMemo<CacheKey>(() => {
return `${path.guildId}-${MEMBERS_CACHE_KEY}`
}, [path.guildId])
const {
items: members,
@ -89,7 +91,7 @@ export const MembersProviders: React.FC<
export const useMembers = (): Members => {
const members = useContext(MembersContext)
if (members === defaultMembersContext) {
throw new Error('useMembers must be used within MembersProvider')
throw new Error('`useMembers` must be used within `MembersProvider`')
}
return members
}

View File

@ -1,4 +1,4 @@
import { createContext, useContext, useEffect } from 'react'
import { createContext, useContext, useEffect, useMemo } from 'react'
import { NextPage, usePagination } from '../hooks/usePagination'
import { useAuthentication } from '../tools/authentication'
@ -26,7 +26,9 @@ export const MessagesProvider: React.FC<
const { path, children } = props
const { authentication, user } = useAuthentication()
const cacheKey: CacheKey = `${path.channelId}-${MESSAGES_CACHE_KEY}`
const cacheKey = useMemo<CacheKey>(() => {
return `${path.channelId}-${MESSAGES_CACHE_KEY}`
}, [path.channelId])
const {
items: messages,
@ -88,7 +90,7 @@ export const MessagesProvider: React.FC<
export const useMessages = (): Messages => {
const messages = useContext(MessagesContext)
if (messages === defaultMessagesContext) {
throw new Error('useMessages must be used within a MessagesProvider')
throw new Error('`useMessages` must be used within a `MessagesProvider`')
}
return messages
}