From 267d723dd9500f8d110a8434ac33370099f0cdd7 Mon Sep 17 00:00:00 2001 From: Willy Kloucek Date: Wed, 3 Nov 2021 11:01:33 +0100 Subject: [PATCH] fix open by default app and expose default app --- .../unreleased/fix-default-app-handling.md | 7 +++++ pkg/app/registry/static/static.go | 28 +++++++++++++------ 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 changelog/unreleased/fix-default-app-handling.md diff --git a/changelog/unreleased/fix-default-app-handling.md b/changelog/unreleased/fix-default-app-handling.md new file mode 100644 index 0000000000..e747f819f9 --- /dev/null +++ b/changelog/unreleased/fix-default-app-handling.md @@ -0,0 +1,7 @@ +Bugfix: Fix open by default app and expose default app + +We've fixed the open by default app name behaviour which previously only worked, if the default app was configured by the provider address. +We also now expose the default app on the `/app/list` endpoint to clients. + +https://github.com/cs3org/reva/issues/2230 +https://github.com/cs3org/cs3apis/pull/157 diff --git a/pkg/app/registry/static/static.go b/pkg/app/registry/static/static.go index dcce6e2bdc..5c803e017a 100644 --- a/pkg/app/registry/static/static.go +++ b/pkg/app/registry/static/static.go @@ -227,13 +227,14 @@ func (m *manager) ListSupportedMimeTypes(ctx context.Context) ([]*registrypb.Mim mime := pair.Value.(*mimeTypeConfig) res = append(res, ®istrypb.MimeTypeInfo{ - MimeType: mime.MimeType, - Ext: mime.Extension, - Name: mime.Name, - Description: mime.Description, - Icon: mime.Icon, - AppProviders: mime.apps, - AllowCreation: mime.AllowCreation, + MimeType: mime.MimeType, + Ext: mime.Extension, + Name: mime.Name, + Description: mime.Description, + Icon: mime.Icon, + AppProviders: mime.apps, + AllowCreation: mime.AllowCreation, + DefaultApplication: mime.DefaultApp, }) } @@ -300,11 +301,20 @@ func (m *manager) GetDefaultProviderForMimeType(ctx context.Context, mimeType st m.RLock() defer m.RUnlock() - mime, ok := m.mimetypes.Get(mimeType) + mimeInterface, ok := m.mimetypes.Get(mimeType) if ok { - if p, ok := m.providers[mime.(*mimeTypeConfig).DefaultApp]; ok { + mime := mimeInterface.(*mimeTypeConfig) + // default by provider address + if p, ok := m.providers[mime.DefaultApp]; ok { return p, nil } + + // default by provider name + for _, p := range m.providers { + if p.Name == mime.DefaultApp { + return p, nil + } + } } return nil, errtypes.NotFound("default application provider not set for mime type " + mimeType)