Share subfolder feature implemented#728
Conversation
Co-authored-by: dianlight <dianlight@users.noreply.github.com>
|
User opencode-agent[bot] does not have write permissions |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #728 +/- ##
==========================================
- Coverage 43.24% 43.22% -0.03%
==========================================
Files 297 297
Lines 29749 29786 +37
Branches 1932 1936 +4
==========================================
+ Hits 12865 12874 +9
- Misses 14950 14968 +18
- Partials 1934 1944 +10
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
/oc subfolder is a lab feature available only in lab mode. |
|
Here's my code review: Issues Found1. 🐛 False positive in
|
|
User github-actions[bot] does not have write permissions |

Here's a summary of the implementation for the "Allow Share Subfolders" feature:
Backend Changes
DTO layer (
backend/src/dto/shared_resource.go)Subfolder stringfield withjson:"subfolder,omitempty"tag toSharedResourceDBOM layer (
backend/src/dbom/exported_share.go)Subfolder stringfield withgorm:"default:''"tag toExportedShareConfig layer (
backend/src/config/addon_json_config.go)Subfolder stringfield toconfig.SharestructConverters (generated code)
ExportedShareToShare,ExportedShareToSharedResource,SharedResourceToExportedShareNoUsersNoMountPointPath,ShareToExportedShareNoMountPointPath, andsharedResourceToExportedShareto map theSubfolderfieldService layer (
backend/src/service/share_service.go)validateSubfolder()— rejects absolute paths and..traversalensureSubfolder()— creates the subfolder directory on disk with0o755permissionsCreateShare()andUpdateShare()CreateShare()Server process service (
backend/src/service/server_process_service.go)jSONFromDatabase()resolves subfolder intoconfig.Share.Pathbefore template rendering, so the Samba template automatically uses the correct resolved pathFrontend Changes
ShareEditForm.tsxsubfolderto default form valuesTextFieldElement"Subfolder (optional)" input with helper text, shown for non-internal sharesShareDetailsPanel.tsxsratApi.ts(generated types)subfolder?: stringtoSharedResourceandSharedResourcePostDatatypes (will be auto-regenerated on nextbun run gen)Tasks remaining (per task file):
bun run genCloses #184
opencode session | github run