fix: cache with duplicated data
This commit is contained in:
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user