|
@@ -20,6 +20,7 @@ import { usePermissionsContext } from '@/features/ide-react/context/permissions-
|
|
|
|
|
|
|
|
export type TrackChangesState = {
|
|
export type TrackChangesState = {
|
|
|
onForEveryone: boolean
|
|
onForEveryone: boolean
|
|
|
|
|
+ onForGuests: boolean
|
|
|
onForMembers: Record<UserId, boolean | undefined>
|
|
onForMembers: Record<UserId, boolean | undefined>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -30,6 +31,7 @@ export const TrackChangesStateContext = createContext<
|
|
|
type SaveTrackChangesRequestBody = {
|
|
type SaveTrackChangesRequestBody = {
|
|
|
on?: boolean
|
|
on?: boolean
|
|
|
on_for?: Record<UserId, boolean | undefined>
|
|
on_for?: Record<UserId, boolean | undefined>
|
|
|
|
|
+ on_for_guests?: boolean
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
type TrackChangesStateActions = {
|
|
type TrackChangesStateActions = {
|
|
@@ -60,20 +62,22 @@ export const TrackChangesStateProvider: FC<React.PropsWithChildren> = ({
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
setWantTrackChanges(
|
|
setWantTrackChanges(
|
|
|
trackChangesValue === true ||
|
|
trackChangesValue === true ||
|
|
|
- (trackChangesValue !== false && !!user.id && trackChangesValue[user.id])
|
|
|
|
|
|
|
+ (trackChangesValue !== false &&
|
|
|
|
|
+ trackChangesValue[user.id ?? '__guests__'])
|
|
|
)
|
|
)
|
|
|
}, [setWantTrackChanges, trackChangesValue, user.id])
|
|
}, [setWantTrackChanges, trackChangesValue, user.id])
|
|
|
|
|
|
|
|
const trackChangesIsObject =
|
|
const trackChangesIsObject =
|
|
|
trackChangesValue !== true && trackChangesValue !== false
|
|
trackChangesValue !== true && trackChangesValue !== false
|
|
|
const onForEveryone = trackChangesValue === true
|
|
const onForEveryone = trackChangesValue === true
|
|
|
|
|
+ const onForGuests =
|
|
|
|
|
+ onForEveryone ||
|
|
|
|
|
+ (trackChangesIsObject && trackChangesValue.__guests__ === true)
|
|
|
|
|
|
|
|
const onForMembers = useMemo(() => {
|
|
const onForMembers = useMemo(() => {
|
|
|
const onForMembers: Record<UserId, boolean | undefined> = {}
|
|
const onForMembers: Record<UserId, boolean | undefined> = {}
|
|
|
if (trackChangesIsObject) {
|
|
if (trackChangesIsObject) {
|
|
|
for (const key of Object.keys(trackChangesValue)) {
|
|
for (const key of Object.keys(trackChangesValue)) {
|
|
|
- // TODO: Remove this check when we have converted
|
|
|
|
|
- // all projects to the current format.
|
|
|
|
|
if (key !== '__guests__') {
|
|
if (key !== '__guests__') {
|
|
|
onForMembers[key as UserId] = trackChangesValue[key as UserId]
|
|
onForMembers[key as UserId] = trackChangesValue[key as UserId]
|
|
|
}
|
|
}
|
|
@@ -141,8 +145,8 @@ export const TrackChangesStateProvider: FC<React.PropsWithChildren> = ({
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
const value = useMemo(
|
|
const value = useMemo(
|
|
|
- () => ({ onForEveryone, onForMembers }),
|
|
|
|
|
- [onForEveryone, onForMembers]
|
|
|
|
|
|
|
+ () => ({ onForEveryone, onForGuests, onForMembers }),
|
|
|
|
|
+ [onForEveryone, onForGuests, onForMembers]
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
return (
|
|
return (
|