Skip to content
This repository was archived by the owner on Aug 21, 2024. It is now read-only.

Commit 7293cbf

Browse files
authored
Disabled feathers-sync on file-browser methods. (#7562)
Large files were choking feathers-sync and leading to irregular behavior. Added a FileBrowserService event for setting updateNeeded to true. upload.tsx now calls this on a slight delay so that the file browser can update after a file is uploaded through Import Asset/drag-and-drop.
1 parent 2bdf5ec commit 7293cbf

4 files changed

Lines changed: 34 additions & 4 deletions

File tree

β€Žpackages/client-core/src/common/services/FileBrowserService.tsβ€Ž

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ export const FileBrowserServiceReceptor = (action) => {
4242
retrieving: true
4343
})
4444
})
45+
.when(FileBrowserAction.setUpdateNeeded.matches, (action) => {
46+
return s.merge({
47+
updateNeeded: action.updateNeeded
48+
})
49+
})
4550
}
4651

4752
export const accessFileBrowserState = () => getState(FileBrowserState)
@@ -62,6 +67,11 @@ export class FileBrowserAction {
6267
type: 'xre.client.FileBrowser.FILES_DELETED' as const,
6368
contentPath: matches.any
6469
})
70+
71+
static setUpdateNeeded = defineAction({
72+
type: 'xre.editor.FileBrowser.SET_UPDATE_NEEDED' as const,
73+
updateNeeded: matches.boolean
74+
})
6575
}
6676

6777
let _lastDir = null! as string

β€Žpackages/client-core/src/util/upload.tsxβ€Ž

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import i18n from 'i18next'
22

33
import config from '@xrengine/common/src/config'
4+
import { dispatchAction } from '@xrengine/hyperflux'
45

6+
import { FileBrowserAction } from '../common/services/FileBrowserService'
57
import { accessAuthState } from '../user/services/AuthService'
68
import { RethrownError } from './errors'
79

@@ -78,6 +80,9 @@ export const uploadToFeathersService = (
7880
request.open('post', `${config.client.serverUrl}/${service}`, true)
7981
request.setRequestHeader('Authorization', `Bearer ${token}`)
8082
request.send(formData)
83+
setTimeout(() => {
84+
dispatchAction(FileBrowserAction.setUpdateNeeded({ updateNeeded: true }))
85+
}, 2000)
8186
})
8287
}
8388
}

β€Žpackages/editor/src/components/assets/FileBrowserContentPanel.tsxβ€Ž

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ const FileBrowserContentPanel: React.FC<FileBrowserContentPanelProps> = (props)
102102
)
103103
const fileState = useFileBrowserState()
104104
const filesValue = fileState.files.attach(Downgraded).value
105-
const { skip, total, retrieving } = fileState.value
105+
const { skip, total, retrieving, updateNeeded } = fileState.value
106106
const [fileProperties, setFileProperties] = useState<any>(null)
107107
const [openProperties, setOpenPropertiesModal] = useState(false)
108108
const [openCompress, setOpenCompress] = useState(false)
@@ -165,6 +165,10 @@ const FileBrowserContentPanel: React.FC<FileBrowserContentPanelProps> = (props)
165165
setLoading(false)
166166
}, [filesValue])
167167

168+
useEffect(() => {
169+
if (updateNeeded) onRefreshDirectory()
170+
}, [updateNeeded])
171+
168172
useEffect(() => {
169173
FileBrowserService.fetchFiles(selectedDirectory)
170174
}, [selectedDirectory])

β€Žpackages/server-core/src/media/file-browser/file-browser.hooks.tsβ€Ž

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { disallow, iff, isProvider } from 'feathers-hooks-common'
1+
import { iff, isProvider } from 'feathers-hooks-common'
2+
import { SYNC } from 'feathers-sync'
23

34
import authenticate from '../../hooks/authenticate'
45
import verifyScope from '../../hooks/verify-scope'
@@ -8,9 +9,19 @@ export default {
89
all: [authenticate(), iff(isProvider('external'), verifyScope('editor', 'write') as any)],
910
find: [],
1011
get: [],
11-
create: [],
12+
create: [
13+
(context) => {
14+
context[SYNC] = false
15+
return context
16+
}
17+
],
1218
update: [],
13-
patch: [],
19+
patch: [
20+
(context) => {
21+
context[SYNC] = false
22+
return context
23+
}
24+
],
1425
remove: []
1526
},
1627

0 commit comments

Comments
Β (0)