1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-10 18:10:49 +09:00

GO-2166: Rearrange code

This commit is contained in:
Sergey 2023-10-13 10:16:16 +05:00
parent 05ee0ebe1d
commit bb52b48715
No known key found for this signature in database
GPG key ID: 3B6BEF79160221C6
4 changed files with 99 additions and 73 deletions

View file

@ -100,6 +100,8 @@ func (s *service) Name() (name string) {
}
func (s *service) Run(ctx context.Context) (err error) {
s.ctx, s.ctxCancel = context.WithCancel(context.Background())
err = s.initMarketplaceSpace()
if err != nil {
return fmt.Errorf("init marketplace space: %w", err)
@ -108,44 +110,9 @@ func (s *service) Run(ctx context.Context) (err error) {
if err != nil {
return fmt.Errorf("init tech space: %w", err)
}
s.ctx, s.ctxCancel = context.WithCancel(context.Background())
s.personalSpaceID, err = s.spaceCore.DeriveID(s.ctx, spacecore.SpaceType)
err = s.initPersonalSpace()
if err != nil {
return
}
// TODO: move this logic to any-sync
s.repKey, err = getRepKey(s.personalSpaceID)
if err != nil {
return
}
if s.newAccount {
return s.createPersonalSpace(s.ctx)
}
return s.loadPersonalSpace(s.ctx)
}
func (s *service) initTechSpace() error {
techCoreSpace, err := s.spaceCore.Derive(context.Background(), spacecore.TechSpaceType)
if err != nil {
return fmt.Errorf("derive tech space: %w", err)
}
sp := &space{
service: s,
Space: techCoreSpace,
loadMandatoryObjectsCh: make(chan struct{}),
installer: s.bundledObjectsInstaller,
}
sp.Cache = objectcache.New(techCoreSpace, s.accountService, s.objectFactory, s.personalSpaceID, sp)
err = s.techSpace.Run(techCoreSpace, sp.Cache)
s.preLoad(sp)
if err != nil {
return fmt.Errorf("run tech space: %w", err)
return fmt.Errorf("init personal space: %w", err)
}
return nil
}
@ -177,42 +144,6 @@ func (s *service) open(ctx context.Context, spaceID string) (sp Space, err error
return s.newSpace(ctx, coreSpace)
}
func (s *service) createPersonalSpace(ctx context.Context) (err error) {
coreSpace, err := s.spaceCore.Derive(ctx, spacecore.SpaceType)
if err != nil {
return
}
_, err = s.create(ctx, coreSpace)
if err == nil {
return
}
if errors.Is(err, techspace.ErrSpaceViewExists) {
return s.loadPersonalSpace(ctx)
}
return
}
func (s *service) loadPersonalSpace(ctx context.Context) (err error) {
err = s.startLoad(ctx, s.personalSpaceID)
// This could happen for old accounts
if errors.Is(err, ErrSpaceNotExists) {
err = s.techSpace.SpaceViewCreate(ctx, s.personalSpaceID)
if err != nil {
return err
}
err = s.startLoad(ctx, s.personalSpaceID)
if err != nil {
return err
}
}
if err != nil {
return
}
_, err = s.waitLoad(ctx, s.personalSpaceID)
return err
}
func (s *service) IsPersonal(id string) bool {
return s.personalSpaceID == id
}

63
space/space_personal.go Normal file
View file

@ -0,0 +1,63 @@
package space
import (
"context"
"errors"
"github.com/anyproto/anytype-heart/space/spacecore"
"github.com/anyproto/anytype-heart/space/techspace"
)
func (s *service) initPersonalSpace() (err error) {
s.personalSpaceID, err = s.spaceCore.DeriveID(s.ctx, spacecore.SpaceType)
if err != nil {
return
}
// TODO: move this logic to any-sync
s.repKey, err = getRepKey(s.personalSpaceID)
if err != nil {
return
}
if s.newAccount {
return s.createPersonalSpace(s.ctx)
}
return s.loadPersonalSpace(s.ctx)
}
func (s *service) createPersonalSpace(ctx context.Context) (err error) {
coreSpace, err := s.spaceCore.Derive(ctx, spacecore.SpaceType)
if err != nil {
return
}
_, err = s.create(ctx, coreSpace)
if err == nil {
return
}
if errors.Is(err, techspace.ErrSpaceViewExists) {
return s.loadPersonalSpace(ctx)
}
return
}
func (s *service) loadPersonalSpace(ctx context.Context) (err error) {
err = s.startLoad(ctx, s.personalSpaceID)
// This could happen for old accounts
if errors.Is(err, ErrSpaceNotExists) {
err = s.techSpace.SpaceViewCreate(ctx, s.personalSpaceID)
if err != nil {
return err
}
err = s.startLoad(ctx, s.personalSpaceID)
if err != nil {
return err
}
}
if err != nil {
return
}
_, err = s.waitLoad(ctx, s.personalSpaceID)
return err
}

32
space/space_tech.go Normal file
View file

@ -0,0 +1,32 @@
package space
import (
"context"
"fmt"
"github.com/anyproto/anytype-heart/core/block/object/objectcache"
"github.com/anyproto/anytype-heart/space/spacecore"
)
func (s *service) initTechSpace() error {
techCoreSpace, err := s.spaceCore.Derive(context.Background(), spacecore.TechSpaceType)
if err != nil {
return fmt.Errorf("derive tech space: %w", err)
}
sp := &space{
service: s,
Space: techCoreSpace,
loadMandatoryObjectsCh: make(chan struct{}),
installer: s.bundledObjectsInstaller,
}
sp.Cache = objectcache.New(techCoreSpace, s.accountService, s.objectFactory, s.personalSpaceID, sp)
err = s.techSpace.Run(techCoreSpace, sp.Cache)
s.preLoad(sp)
if err != nil {
return fmt.Errorf("run tech space: %w", err)
}
return nil
}