Repository navigation
fix(recording): fix recipient share path and stale token guards - #18043
Closed
miaulalala wants to merge 1 commit into
Closed
miaulalala wants to merge 1 commit into
miaulalala wants to merge 1 commit into
Conversation
miaulalala
marked this pull request as draft
May 20, 2026 08:38
miaulalala
force-pushed
the
fix/recording-conversation-folder
branch
from
May 20, 2026 09:12
b2d00a0 to
2c5953a
Compare
Contributor
Author
|
/backport to stable34 |
miaulalala
force-pushed
the
fix/recording-conversation-folder
branch
2 times, most recently
from
May 20, 2026 09:54
b62200f to
a2a46d9
Compare
miaulalala
force-pushed
the
fix/recording-conversation-folder
branch
from
May 20, 2026 10:02
a2a46d9 to
a88acf8
Compare
… are enabled With conversation subfolders enabled, overwriteShareTarget() used the full relative path from the attachment root for any TYPE_ROOM share, including recordings stored at Talk/Recording/<token>/. Recipients would then see the recording mounted at Talk/Recording/<token>/ in their own files, with a meaningless token directory. Fix: only use the full relative path when the first path segment after the attachment folder matches the conversation folder pattern (<name>-<token>). The Recording/ directory does not match, so it falls back to the flat filename and recipients see the recording at Talk/recording.mp4. AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Anna Larch <anna@nextcloud.com>
miaulalala
force-pushed
the
fix/recording-conversation-folder
branch
from
May 20, 2026 13:13
a88acf8 to
b14bfb6
Compare
miaulalala
marked this pull request as ready for review
May 20, 2026 13:15
3 tasks done
Member
|
Fixed via #18047 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Root cause fix — recipient share path (
Share/Listener.php)overwriteShareTarget()computes thefile_targetfor TYPE_ROOM shares. With conversation subfolders enabled it uses the full relative path from the attachment root for any file that happens to live underTalk/. This caused recordings atTalk/Recording/<token>/recording.mp4to be mounted asTalk/Recording/<token>/recording.mp4in every recipient's files — the meaningless token folder is confusing and was not present before subfolders were introduced.Fix: only keep the full relative path when the first path segment after the attachment folder matches the conversation folder pattern (
<name>-<token>). The recording folder (Recording/) does not match, so it falls back to the flat filename — recipients see the recording atTalk/recording.mp4, same as before subfolders.Additional bug fixes
getRecordingFolder()): was resettingUserPreference::ATTACHMENT_FOLDERwhen the recording root was a shared folder; must resetUserPreference::RECORDING_FOLDER.storeTranscript()name guard:$recordingFolder->getName() !== $roomTokenthrows once a recording has been moved to a path whose parent is not the token. Removed.notifyAboutFailedTranscript()name guard: same stale guard, same fix.Test plan
RecordingServiceTest)has file at path/has no file at path(WebDAV PROPFIND +ROOM()resolution)Talk/Recording/<token>/from the owner's perspective after sharingTalk/recording.mp4, notTalk/Recording/<token>/recording.mp4🤖 Generated with Claude Code