diff --git a/changelog/unreleased/fix-acitivity-folder.md b/changelog/unreleased/fix-acitivity-folder.md new file mode 100644 index 000000000..4e2c27d01 --- /dev/null +++ b/changelog/unreleased/fix-acitivity-folder.md @@ -0,0 +1,6 @@ +Bugfix: Fixed the missing folder variable + +We fixed the missing folder variable when folder renamed. + +https://github.com/owncloud/ocis/pull/10150 +https://github.com/owncloud/ocis/issues/10148 diff --git a/services/activitylog/pkg/service/http.go b/services/activitylog/pkg/service/http.go index d888b9052..2d8522ba1 100644 --- a/services/activitylog/pkg/service/http.go +++ b/services/activitylog/pkg/service/http.go @@ -134,19 +134,19 @@ func (s *ActivitylogService) HandleGetItemActivities(w http.ResponseWriter, r *h message = MessageResourceUpdated } ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithResource(ev.FileRef, true), WithUser(nil, ev.ExecutingUser, ev.ImpersonatingUser), WithSpace(toSpace(ev.FileRef))) + vars, err = s.GetVars(ctx, WithResource(ev.FileRef, true), WithUser(nil, ev.ExecutingUser, ev.ImpersonatingUser)) case events.FileTouched: message = MessageResourceCreated ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case events.ContainerCreated: message = MessageResourceCreated ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case events.ItemTrashed: message = MessageResourceTrashed ts = utils.TSToTime(ev.Timestamp) - vars, err = s.GetVars(ctx, WithTrashedResource(ev.Ref, ev.ID), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithTrashedResource(ev.Ref, ev.ID), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case events.ItemMoved: switch isRename(ev.OldReference, ev.Ref) { case true: @@ -154,7 +154,7 @@ func (s *ActivitylogService) HandleGetItemActivities(w http.ResponseWriter, r *h vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithOldResource(ev.OldReference), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) case false: message = MessageResourceMoved - vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithSpace(toSpace(ev.Ref))) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, true), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) } ts = utils.TSToTime(ev.Timestamp) case events.ShareCreated: diff --git a/services/activitylog/pkg/service/response.go b/services/activitylog/pkg/service/response.go index 72838bd29..587b1ff7d 100644 --- a/services/activitylog/pkg/service/response.go +++ b/services/activitylog/pkg/service/response.go @@ -80,6 +80,18 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption { vars["resource"] = Resource{ Name: filepath.Base(ref.GetPath()), } + n := filepath.Base(filepath.Dir(ref.GetPath())) + if n == "." || n == "/" { + s, err := utils.GetSpace(ctx, toSpace(ref).GetOpaqueId(), gwc) + if err == nil { + n = s.GetName() + } else { + n = "root" + } + } + vars["folder"] = Resource{ + Name: n, + } return err } @@ -88,16 +100,6 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption { Name: info.GetName(), } - parent, err := utils.GetResourceByID(ctx, info.GetParentId(), gwc) - if err != nil { - return err - } - - vars["folder"] = Resource{ - ID: info.GetParentId().GetOpaqueId(), - Name: parent.GetName(), - } - if addSpace { vars["space"] = Resource{ ID: info.GetSpace().GetId().GetOpaqueId(), @@ -105,6 +107,15 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption { } } + parent, err := utils.GetResourceByID(ctx, info.GetParentId(), gwc) + if err != nil { + return err + } + vars["folder"] = Resource{ + ID: info.GetParentId().GetOpaqueId(), + Name: parent.GetName(), + } + return nil } } @@ -126,6 +137,18 @@ func WithTrashedResource(ref *provider.Reference, rid *provider.ResourceId) Acti vars["resource"] = Resource{ Name: filepath.Base(ref.GetPath()), } + n := filepath.Base(filepath.Dir(ref.GetPath())) + if n == "." || n == "/" { + s, err := utils.GetSpace(ctx, toSpace(ref).GetOpaqueId(), gwc) + if err == nil { + n = s.GetName() + } else { + n = "root" + } + } + vars["folder"] = Resource{ + Name: n, + } resp, err := gwc.ListRecycle(ctx, &provider.ListRecycleRequest{ Ref: ref, @@ -145,6 +168,12 @@ func WithTrashedResource(ref *provider.Reference, rid *provider.ResourceId) Acti ID: storagespace.FormatResourceID(rid), Name: filepath.Base(item.GetRef().GetPath()), } + in := filepath.Base(filepath.Dir(item.GetRef().GetPath())) + if in != "." && in != "/" { + vars["folder"] = Resource{ + Name: in, + } + } return nil } @@ -231,11 +260,6 @@ func WithSharee(uid *user.UserId, gid *group.GroupId) ActivityOption { // WithSpace sets the space variable for an activity func WithSpace(spaceid *provider.StorageSpaceId) ActivityOption { return func(ctx context.Context, gwc gateway.GatewayAPIClient, vars map[string]interface{}) error { - if _, ok := vars["space"]; ok { - // do not override space if already set - return nil - } - s, err := utils.GetSpace(ctx, spaceid.GetOpaqueId(), gwc) if err != nil { vars["space"] = Resource{