Skip to content

Attachments Folder: When setting the attachments folder to an external folder in "Talk Settings" - it resets to the default folder when refreshing. #1167

Open
@mich-a-b

Description

@mich-a-b

How to use GitHub

  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce

  1. Add a external folder under "External storage" setting (Amazon S3 in our case)
  2. Change the "Attachment folder" settings for Talk to use the new external storage folder.
  3. Try sending an attachment message (It will fail)
  4. Ctrl+r to refresh the client.
  5. Check the "Attachment folder" settings for talk - it had reset to /Talk

Expected behaviour

It should keep using the external storage folder - the online talk client keeps this setting and works fine.

Actual behaviour

It uploads the attachment to the external storage folder successfully - but the message never get's sent to the contact.

After reloading it resets the "Attachment folder" to /Talk.

Tested on Debian, POP_OS! & Ubuntu

-1741877637957.log

Diagnosis and logs

Diagnosis report

Diagnosis report

Nextcloud Talk Desktop
Version v1.1.5
Built-in Talk version v21.0.0
Release channel stable
Operating system Linux 6.1.0-31-amd64 (#1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07))
Executable Path /app/lib/com.nextcloud.talk/Nextcloud Talk
Using Wayland ✅ yes
Connected to -
Nextcloud server version 31.0.0
Nextcloud Talk version 21.0.1
notifications app enabled ✅ yes
notify_push app enabled ✅ yes

Application config

{
  "launchAtStartup": false,
  "theme": "default",
  "systemTitleBar": true,
  "monochromeTrayIcon": false,
  "zoomFactor": 1,
  "playSoundChat": "respect-dnd",
  "playSoundCall": "respect-dnd",
  "enableCallbox": "respect-dnd",
  "secondarySpeaker": false,
  "secondarySpeakerDevice": null
}
Client logs

Press Ctrl+Shift+I (Cmd+Option+C on macOS) or use the context menu to open the developer tools, then go to the Console tab.

index.js:2 Using locale "" for language "en"
JitsiStreamBackgroundEffect.worker.js?v=471eafd44fff5b32d804:1 [WASM] Loading model of size: 249792
JitsiStreamBackgroundEffect.worker.js?v=471eafd44fff5b32d804:1 INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
printChar @ JitsiStreamBackgroundEffect.worker.js?v=471eafd44fff5b32d804:1
JitsiStreamBackgroundEffect.worker.js?v=471eafd44fff5b32d804:1 [WASM] Loading model of size: 249792
JitsiStreamBackgroundEffect.worker.js?v=471eafd44fff5b32d804:1 INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
printChar @ JitsiStreamBackgroundEffect.worker.js?v=471eafd44fff5b32d804:1
cloud.metaship.ai/ocs/v2.php/apps/user_status/api/v1/statuses/_evan%40metaship.ai:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/ocs/v2.php/apps/user_status/api/v1/statuses/_evan%40metaship.ai:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=4048&x=32&y=32&mimeFallback=true&a=0&c=67d28e593641c:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=3542&x=32&y=32&mimeFallback=true&a=0&c=67d2efd27d776:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=3543&x=32&y=32&mimeFallback=true&a=0&c=67d27f07de07d:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=4074&x=32&y=32&mimeFallback=true&a=0&c=67d288f174c70:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=3902&x=32&y=32&mimeFallback=true&a=0&c=67d288ea1e047:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=3545&x=32&y=32&mimeFallback=true&a=0&c=67d27b5a36a43:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=4751&x=32&y=32&mimeFallback=true&a=0&c=67d2de7b85fe3:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=4449&x=32&y=32&mimeFallback=true&a=0&c=67d28d40cefba:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/core/preview?fileId=3544&x=32&y=32&mimeFallback=true&a=0&c=67d27afa1e2a9:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
index.js:2 You need to fill either the text or the ariaLabel props in the button component. Object o
render @ index.js:2
index.js:2 You need to fill either the text or the ariaLabel props in the button component. Object o
render @ index.js:2
index.js:1 Not connected to signaling server yet, defer joining room 8z6vvqme
index.js:2 You need to fill either the text or the ariaLabel props in the button component. Object o
render @ index.js:2
index.js:2 You need to fill either the text or the ariaLabel props in the button component. Object o
render @ index.js:2
index.js:2 You need to fill either the text or the ariaLabel props in the button component. Object o
render @ index.js:2
index.html#/call/8z6vvqme:1 Form submission canceled because the form is not connected
cloud.metaship.ai/remote.php/dav/files/evan%40metaship.ai/Metaship%20Internal/dbgateIcon.png:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
cloud.metaship.ai/ocs/v2.php/apps/files_sharing/api/v1/shares:1 
        
        
       Failed to load resource: the server responded with a status of 404 ()
index.js:1 Error while sharing file: You are not allowed to share dbgateIcon.png
vi @ index.js:1
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
updateConversation @ index.js:1
(anonymous) @ index.js:2
(anonymous) @ index.js:2
(anonymous) @ index.js:2
h._withCommit @ index.js:2
h.commit @ index.js:2
commit @ index.js:2
updateConversationIfHasChanged @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
patchConversations @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
await in fetchConversations
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
(anonymous) @ index.js:1
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
Si.ji.set @ index.js:2
handleSubmit @ index.js:1
ca @ index.js:2
a @ index.js:2
ca @ index.js:2
e.$emit @ index.js:2
onEnter @ index.js:2
e._g.e._b.on.keydown @ index.js:2
ca @ index.js:2
a @ index.js:2
n._wrapper @ index.js:2
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
Te @ index.js:2
addConversation @ index.js:1
(anonymous) @ index.js:2
(anonymous) @ index.js:2
(anonymous) @ index.js:2
h._withCommit @ index.js:2
h.commit @ index.js:2
commit @ index.js:2
updateLastCommonReadMessage @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
postNewMessage @ index.js:1
await in postNewMessage
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
postMessage @ index.js:1
handleSubmit @ index.js:1
ca @ index.js:2
a @ index.js:2
ca @ index.js:2
e.$emit @ index.js:2
onEnter @ index.js:2
e._g.e._b.on.keydown @ index.js:2
ca @ index.js:2
a @ index.js:2
n._wrapper @ index.js:2
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
Te @ index.js:2
addConversation @ index.js:1
(anonymous) @ index.js:2
(anonymous) @ index.js:2
(anonymous) @ index.js:2
h._withCommit @ index.js:2
h.commit @ index.js:2
commit @ index.js:2
updateLastCommonReadMessage @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
lookForNewMessages @ index.js:1
await in lookForNewMessages
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
getNewMessages @ index.js:1
(anonymous) @ index.js:1
setTimeout
getNewMessages @ index.js:1
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
Si.ji.set @ index.js:2
handleUserStatusUpdated @ index.js:2
(anonymous) @ index.js:2
emit @ index.js:2
emit @ index.js:2
c @ index.js:2
ri @ index.js:1
addConversation @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
updateLastReadMessage @ index.js:1
await in updateLastReadMessage
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
postNewMessage @ index.js:1
await in postNewMessage
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
postMessage @ index.js:1
handleSubmit @ index.js:1
ca @ index.js:2
a @ index.js:2
ca @ index.js:2
e.$emit @ index.js:2
onEnter @ index.js:2
e._g.e._b.on.keydown @ index.js:2
ca @ index.js:2
a @ index.js:2
n._wrapper @ index.js:2
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
updateConversation @ index.js:1
(anonymous) @ index.js:2
(anonymous) @ index.js:2
(anonymous) @ index.js:2
h._withCommit @ index.js:2
h.commit @ index.js:2
commit @ index.js:2
updateConversationIfHasChanged @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
patchConversations @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
await in fetchConversations
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
(anonymous) @ index.js:1
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
updateConversation @ index.js:1
(anonymous) @ index.js:2
(anonymous) @ index.js:2
(anonymous) @ index.js:2
h._withCommit @ index.js:2
h.commit @ index.js:2
commit @ index.js:2
updateConversationIfHasChanged @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
patchConversations @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
await in fetchConversations
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
(anonymous) @ index.js:1
index.js:2 You need to fill either the text or the ariaLabel props in the button component. {text: undefined, ariaLabel: null} o {_uid: 367, _isVue: true, __v_skip: true, _scope: e, $options: {…}, …}
render @ index.js:2
e._render @ index.js:2
i @ index.js:2
e.get @ index.js:2
e.run @ index.js:2
ri @ index.js:2
(anonymous) @ index.js:2
va @ index.js:2
Promise.then
ha @ index.js:2
wa @ index.js:2
ni @ index.js:2
e.update @ index.js:2
e.notify @ index.js:2
set @ index.js:2
updateConversation @ index.js:1
(anonymous) @ index.js:2
(anonymous) @ index.js:2
(anonymous) @ index.js:2
h._withCommit @ index.js:2
h.commit @ index.js:2
commit @ index.js:2
updateConversationIfHasChanged @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
patchConversations @ index.js:1
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
await in fetchConversations
(anonymous) @ index.js:2
h.dispatch @ index.js:2
dispatch @ index.js:2
fetchConversations @ index.js:1
(anonymous) @ index.js:1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions