diff --git a/changelog/unreleased/fix-ocm-file-preview.md b/changelog/unreleased/fix-ocm-file-preview.md new file mode 100644 index 00000000000..8bda47f1c32 --- /dev/null +++ b/changelog/unreleased/fix-ocm-file-preview.md @@ -0,0 +1,8 @@ +Bugfix: Fixed `sharedWithMe` response for OCM shares + +OCM shares retunred in the `sharedWithMe` response did not have the `mimeType` property +populated correctly. + + +https://github.com/owncloud/ocis/pull/xxxxx +https://github.com/owncloud/ocis/issues/10495 diff --git a/services/graph/pkg/service/v0/utils.go b/services/graph/pkg/service/v0/utils.go index 02a15dea105..a5480536aca 100644 --- a/services/graph/pkg/service/v0/utils.go +++ b/services/graph/pkg/service/v0/utils.go @@ -2,6 +2,7 @@ package svc import ( "context" + "encoding/base64" "encoding/json" "io" "net/http" @@ -538,14 +539,21 @@ func cs3ReceivedOCMSharesToDriveItems(ctx context.Context, group.Go(func() error { var err error // redeclare + + // for OCM shares the opaqueID is the '/' for shared directories and '/filename' for + // file shares + resOpaqueID := "/" + if receivedShares[0].GetResourceType() == storageprovider.ResourceType_RESOURCE_TYPE_FILE { + resOpaqueID += receivedShares[0].GetName() + } + shareStat, err := gatewayClient.Stat(ctx, &storageprovider.StatRequest{ Ref: &storageprovider.Reference{ ResourceId: &storageprovider.ResourceId{ // TODO maybe the reference is wrong StorageId: utils.OCMStorageProviderID, SpaceId: receivedShares[0].GetId().GetOpaqueId(), - OpaqueId: "", // in OCM resources the opaque id is the base64 encoded path - //OpaqueId: maybe ? receivedShares[0].GetId().GetOpaqueId(), + OpaqueId: base64.StdEncoding.EncodeToString([]byte(resOpaqueID)), }, }, })