44 */
55
66import { getBuilder } from '@nextcloud/browser-storage'
7- import { getGuestNickname , getGuestUser } from '@nextcloud/auth'
7+ import { getGuestNickname , getGuestUser , type NextcloudUser } from '@nextcloud/auth'
88import { getUploader } from '@nextcloud/upload'
99import { loadState } from '@nextcloud/initial-state'
1010import { showGuestUserPrompt } from '@nextcloud/dialogs'
@@ -15,29 +15,29 @@ import { subscribe } from '@nextcloud/event-bus'
1515
1616const storage = getBuilder ( 'files_sharing' ) . build ( )
1717
18- /**
19- * Setup file-request nickname header for the uploader
20- * @param nickname The nickname
21- */
22- function registerFileRequestHeader ( nickname : string ) {
18+ // Setup file-request nickname header for the uploader
19+ const registerFileRequestHeader = ( nickname : string ) => {
2320 const uploader = getUploader ( )
2421 uploader . setCustomHeader ( 'X-NC-Nickname' , encodeURIComponent ( nickname ) )
2522 logger . debug ( 'Nickname header registered for uploader' , { headers : uploader . customHeaders } )
2623}
2724
28- /**
29- * Callback when a nickname was chosen
30- */
31- function onUpdatedNickname ( ) : void {
32- // Register header for uploader
33- registerFileRequestHeader ( getGuestUser ( ) . displayName ?? '' )
25+ // Callback when a nickname was chosen
26+ const onUserInfoChanged = ( guest : NextcloudUser ) => {
27+ logger . debug ( 'User info changed' , { guest } )
28+ registerFileRequestHeader ( guest . displayName ?? '' )
3429}
35- subscribe ( 'user:info:changed' , onUpdatedNickname )
30+
31+ // Monitor nickname changes
32+ subscribe ( 'user:info:changed' , onUserInfoChanged )
3633
3734window . addEventListener ( 'DOMContentLoaded' , ( ) => {
3835 const nickname = getGuestNickname ( ) ?? ''
3936 const dialogShown = storage . getItem ( 'public-auth-prompt-shown' ) !== null
4037
38+ // Check if a nickname is mandatory
39+ const isFileRequest = loadState ( 'files_sharing' , 'isFileRequest' , false )
40+
4141 const owner = loadState ( 'files_sharing' , 'owner' , '' )
4242 const ownerDisplayName = loadState ( 'files_sharing' , 'ownerDisplayName' , '' )
4343 const label = loadState ( 'files_sharing' , 'label' , '' )
@@ -64,12 +64,23 @@ window.addEventListener('DOMContentLoaded', () => {
6464 options . subtitle = t ( 'files_sharing' , '{ownerDisplayName} shared a folder with you.' , { ownerDisplayName } )
6565 }
6666
67- // If we don't have a nickname or the public auth prompt hasn't been shown yet, show it
68- // We still show the prompt if the user has a nickname to double check
69- if ( ! nickname || ! dialogShown ) {
70- showGuestUserPrompt ( options )
71- } else {
72- logger . debug ( 'Public auth prompt already shown.' , { nickname } )
73- registerFileRequestHeader ( nickname )
67+ // If this is a file request, then we need a nickname
68+ if ( isFileRequest ) {
69+ // If we don't have a nickname or the public auth prompt hasn't been shown yet, show it
70+ // We still show the prompt if the user has a nickname to double check
71+ if ( ! nickname || ! dialogShown ) {
72+ logger . debug ( 'Showing public auth prompt.' , { nickname } )
73+ showGuestUserPrompt ( options )
74+ }
75+ return
76+ }
77+
78+ if ( ! dialogShown && ! nickname ) {
79+ logger . debug ( 'Public auth prompt not shown yet but nickname is not mandatory.' , { nickname } )
80+ return
7481 }
82+
83+ // Else, we just register the nickname header if any.
84+ logger . debug ( 'Public auth prompt already shown.' , { nickname } )
85+ registerFileRequestHeader ( nickname )
7586} )
0 commit comments