Merge pull request #10152 from 2403905/issue-10148

We fixed the missing folder variable when folder renamed
This commit is contained in:
Roman Perekhod
2024-09-26 14:04:31 +02:00
committed by GitHub
5 changed files with 608 additions and 214 deletions
+5 -5
View File
@@ -130,19 +130,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, false), 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, false), 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, false), 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:
@@ -150,7 +150,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, false), WithUser(ev.Executant, nil, ev.ImpersonatingUser))
}
ts = utils.TSToTime(ev.Timestamp)
case events.ShareCreated:
+36 -15
View File
@@ -80,6 +80,10 @@ func WithResource(ref *provider.Reference, addSpace bool) ActivityOption {
vars["resource"] = Resource{
Name: filepath.Base(ref.GetPath()),
}
n := getFolderName(ctx, gwc, ref)
vars["folder"] = Resource{
Name: n,
}
return err
}
@@ -88,16 +92,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 +99,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 +129,10 @@ func WithTrashedResource(ref *provider.Reference, rid *provider.ResourceId) Acti
vars["resource"] = Resource{
Name: filepath.Base(ref.GetPath()),
}
n := getFolderName(ctx, gwc, ref)
vars["folder"] = Resource{
Name: n,
}
resp, err := gwc.ListRecycle(ctx, &provider.ListRecycleRequest{
Ref: ref,
@@ -145,6 +152,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 +244,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{
@@ -310,6 +318,19 @@ func (s *ActivitylogService) GetVars(ctx context.Context, opts ...ActivityOption
return vars, nil
}
func getFolderName(ctx context.Context, gwc gateway.GatewayAPIClient, ref *provider.Reference) string {
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"
}
}
return n
}
func mapField(val string) string {
switch val {
case "TYPE_PERMISSIONS", "permission":