Skip to content

Commit 519bd03

Browse files
authored
[FIXES] Auth Check In User Pref And Current Active User (#262)
#262
1 parent 0e0e72c commit 519bd03

File tree

8 files changed

+53
-45
lines changed

8 files changed

+53
-45
lines changed

.changeset/green-coins-enjoy.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'mexit-webapp': patch
3+
---
4+
5+
Auth check in update preferences & active current user

apps/extension/src/Components/Sidebar/NotesInfoBar.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import searchLine from '@iconify/icons-ri/search-line'
44
import { Icon } from '@iconify/react'
55
import { debounce } from 'lodash'
66

7-
import { MEXIT_FRONTEND_URL_BASE, mog } from '@mexit/core'
8-
import { SidebarListFilterWrapper, SidebarListFilter, Input, SnippetCards, copyTextToClipboard } from '@mexit/shared'
7+
import { mog } from '@mexit/core'
8+
import { SidebarListFilterWrapper, SidebarListFilter, Input, SnippetCards } from '@mexit/shared'
99

1010
import useRaju from '../../Hooks/useRaju'
1111
import useDataStore from '../../Stores/useDataStore'
@@ -25,7 +25,6 @@ export const NotesInfoBar = () => {
2525

2626
const onSearch = async (newSearchTerm: string) => {
2727
const res = await dispatch('SEARCH', ['node'], newSearchTerm)
28-
mog('node search results', { res, newSearchTerm })
2928

3029
setSearchedNodes(res?.map((item) => item.id))
3130
}

apps/webapp/src/Components/Editor/Banner/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ const Banner: React.FC<BannerType> = ({
3232

3333
const currentUser = useAuthStore((s) => s.userDetails)
3434
const activeUsers = useRouteStore((s) => Settify(s.routes[route]?.users))
35-
// const usersExcludingMe = activeUsers.filter((userId) => currentUser?.userID !== userId)
3635

3736
const isUserOnly = activeUsers.includes(currentUser?.userID)
38-
// const layoutChange = useMediaQuery({ minWidth: size.tiny })
37+
38+
if (activeUsers?.length === 1 && isUserOnly) return
3939

4040
return (
4141
<BannerContainer>

apps/webapp/src/Components/EditorInfobar/Metadata.tsx

+11-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { DataGroup, DataWrapper, MetadataWrapper } from '@mexit/shared'
1212
import { RelativeTime } from '@mexit/shared'
1313

1414
import { useMentions } from '../../Hooks/useMentions'
15+
import { useAuthStore } from '../../Stores/useAuth'
1516
import { useContentStore } from '../../Stores/useContentStore'
1617
import { useEditorStore } from '../../Stores/useEditorStore'
1718
import { useMentionStore } from '../../Stores/useMentionsStore'
@@ -68,10 +69,17 @@ const Metadata = ({
6869

6970
const sharedUsers = useMemo(() => {
7071
const sharedUsersOfNode = getSharedUsersOfNodeOfSpace(nodeId, namespaceId)
72+
const currentUser = useAuthStore.getState().userDetails
7173
mog('ACTIVE USERS', { activeUsers, mentionable })
72-
return sharedUsersOfNode
73-
.map((user) => ({ userId: user.userID, active: activeUsers.includes(user.userID) }))
74+
75+
const usersWithStatus = sharedUsersOfNode
76+
.map((user) => {
77+
const isUserActive = currentUser?.userID === user.userID || activeUsers?.includes(user.userID)
78+
return { userId: user.userID, active: isUserActive }
79+
})
7480
.sort((a, b) => Number(a.active) - Number(b.active))
81+
82+
return usersWithStatus
7583
}, [location, activeUsers, mentionable, namespaceId, nodeId])
7684

7785
if (!publicMetadata && (content === undefined || content.metadata === undefined || metadata === undefined || isEmpty))
@@ -83,7 +91,7 @@ const Metadata = ({
8391
<DataGroup>
8492
{metadata.lastEditedBy !== undefined && (
8593
<DataWrapper interactive={metadata.updatedAt !== undefined}>
86-
{metadata.lastEditedBy !== undefined && !publicMetadata ? (
94+
{metadata.lastEditedBy !== undefined ? (
8795
<ProfileIcon data-title={metadata.lastEditedBy}>
8896
<ProfileImageWithToolTip props={{ userid: metadata.lastEditedBy, size: 16 }} placement="bottom" />
8997
</ProfileIcon>

apps/webapp/src/Editor/MexEditor.tsx

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import { useState, useEffect, ReactElement } from 'react'
22

3-
import {
4-
Plate,
5-
selectEditor, // PlaceholderProps,
6-
PlatePluginComponent,
7-
SelectEditorOptions,
8-
getPlateEditorRef
9-
} from '@udecode/plate'
3+
import { Plate, PlatePluginComponent, SelectEditorOptions } from '@udecode/plate'
104
import { DndProvider } from 'react-dnd'
115
import { HTML5Backend } from 'react-dnd-html5-backend'
126
import { EditableProps } from 'slate-react/dist/components/editable'

apps/webapp/src/Hooks/API/usePolling.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { useAuthStore } from '../../Stores/useAuth'
66
import { useBookmarks } from '../useBookmarks'
77
import { useFetchShareData } from '../useFetchShareData'
88
import { useNamespaceApi } from './useNamespaceAPI'
9-
import { useApi } from './useNodeAPI'
109

1110
export const PollingInterval = {
1211
[PollActions.shared]: 5 * 60 * 1000, // 5 minutes

apps/webapp/src/Hooks/API/useUserAPI.ts

+20-22
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export const useUserService = () => {
4646
if (user) return user
4747

4848
try {
49-
return await client.get<any>(apiURLs.user.getFromEmail(email), { headers: workspaceHeaders() }).then((resp) => {
49+
return await client.get<any>(apiURLs.user.getFromEmail(email)).then((resp) => {
5050
mog('Response', { data: resp.data })
5151
if (resp?.data?.userId && resp?.data?.name) {
5252
addUser({
@@ -74,27 +74,23 @@ export const useUserService = () => {
7474
if (user) return user
7575

7676
try {
77-
return await client
78-
.get(apiURLs.user.getFromUserId(userID), {
79-
headers: workspaceHeaders()
80-
})
81-
.then((resp: any) => {
82-
mog('Response', { data: resp.data })
83-
if (resp?.data?.email && resp?.data?.name) {
84-
addUser({
85-
userID,
86-
email: resp?.data?.email,
87-
alias: resp?.data?.alias ?? resp?.data?.name,
88-
name: resp?.data?.name
89-
})
90-
}
91-
return {
77+
return await client.get(apiURLs.user.getFromUserId(userID)).then((resp: any) => {
78+
mog('Response', { data: resp.data })
79+
if (resp?.data?.email && resp?.data?.name) {
80+
addUser({
9281
userID,
93-
email: resp?.data?.email ?? undefined,
82+
email: resp?.data?.email,
9483
alias: resp?.data?.alias ?? resp?.data?.name,
9584
name: resp?.data?.name
96-
}
97-
})
85+
})
86+
}
87+
return {
88+
userID,
89+
email: resp?.data?.email ?? undefined,
90+
alias: resp?.data?.alias ?? resp?.data?.name,
91+
name: resp?.data?.name
92+
}
93+
})
9894
} catch (e) {
9995
mog('Error Fetching User Details', { error: e, userID })
10096
return { userID }
@@ -131,9 +127,11 @@ export const useUserService = () => {
131127
}
132128

133129
try {
134-
return await client.put(apiURLs.user.updateInfo, { id: userID, preference: userPreferences }).then((resp) => {
135-
return true
136-
})
130+
return await client
131+
.put(apiURLs.user.updateInfo, { id: userID, preference: userPreferences }, { headers: workspaceHeaders() })
132+
.then((resp) => {
133+
return true
134+
})
137135
} catch (e) {
138136
mog('Error Updating User Info', { error: e, userID })
139137
return false

apps/webapp/src/Hooks/useSyncUserPreferences.ts

+12-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import { useEffect } from 'react'
33
import { mog } from '@mexit/core'
44
import { mergeUserPreferences } from '@mexit/shared'
55

6+
import { useAuthStore } from '../Stores/useAuth'
67
import { useUserPreferenceStore } from '../Stores/userPreferenceStore'
78
import { useUserService } from './API/useUserAPI'
89

910
const USER_PREF_AUTO_SAVE_MS = 30 * 60 * 1000 // 30 minutes
1011

1112
export const useAutoSyncUserPreference = () => {
13+
const isAuthenticated = useAuthStore((store) => store.authenticated)
1214
const getUserPreferences = useUserPreferenceStore((s) => s.getUserPreferences)
1315
const setUserPreferences = useUserPreferenceStore((store) => store.setUserPreferences)
1416
const hasHydrated = useUserPreferenceStore((s) => s._hasHydrated)
@@ -34,17 +36,20 @@ export const useAutoSyncUserPreference = () => {
3436
// mog(`Fetching User Preferences`)
3537
if (hasHydrated) {
3638
// mog('Hydration finished')
37-
updateCurrentUserPreferences()
39+
if (isAuthenticated) updateCurrentUserPreferences()
3840
}
39-
}, [hasHydrated])
41+
}, [hasHydrated, isAuthenticated])
4042

4143
/**
4244
* Saves the user preference at every interval
4345
*/
4446
useEffect(() => {
45-
const intervalId = setInterval(() => {
46-
updateUserPreferences()
47-
}, USER_PREF_AUTO_SAVE_MS)
48-
return () => clearInterval(intervalId)
49-
}, [])
47+
if (isAuthenticated) {
48+
const intervalId = setInterval(() => {
49+
updateUserPreferences()
50+
}, USER_PREF_AUTO_SAVE_MS)
51+
52+
return () => clearInterval(intervalId)
53+
}
54+
}, [isAuthenticated])
5055
}

0 commit comments

Comments
 (0)