diff --git a/client/clientspace/service.go b/client/clientspace/service.go index fdb90e51..d22ab135 100644 --- a/client/clientspace/service.go +++ b/client/clientspace/service.go @@ -41,9 +41,7 @@ func (s *service) Init(a *app.App) (err error) { s.commonSpace = a.MustComponent(commonspace.CName).(commonspace.Service) s.spaceStorageProvider = a.MustComponent(storage.CName).(storage.SpaceStorageProvider) s.spaceCache = ocache.New( - func(ctx context.Context, id string) (value ocache.Object, err error) { - return s.commonSpace.NewSpace(ctx, id) - }, + s.loadSpace, ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), ocache.WithTTL(time.Duration(s.conf.GCTTL)*time.Second), @@ -97,6 +95,21 @@ func (s *service) AddSpace(ctx context.Context, description commonspace.SpaceDes return s.commonSpace.AddSpace(ctx, description) } +func (s *service) loadSpace(ctx context.Context, id string) (value ocache.Object, err error) { + cc, err := s.commonSpace.NewSpace(ctx, id) + if err != nil { + return + } + ns, err := newClientSpace(cc) + if err != nil { + return + } + if err = ns.Init(ctx); err != nil { + return + } + return ns, nil +} + func (s *service) Close(ctx context.Context) (err error) { return s.spaceCache.Close() } diff --git a/client/clientspace/space.go b/client/clientspace/space.go new file mode 100644 index 00000000..f0e7fda3 --- /dev/null +++ b/client/clientspace/space.go @@ -0,0 +1,22 @@ +package clientspace + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace" +) + +func newClientSpace(cc commonspace.Space) (commonspace.Space, error) { + return &clientSpace{cc}, nil +} + +type clientSpace struct { + commonspace.Space +} + +func (s *clientSpace) Init(ctx context.Context) (err error) { + return s.Space.Init(ctx) +} + +func (s *clientSpace) Close() (err error) { + return s.Space.Close() +}