diff --git a/app/app.go b/app/app.go index 85d67f61..3655724c 100644 --- a/app/app.go +++ b/app/app.go @@ -172,7 +172,7 @@ func (app *App) Start(ctx context.Context) (err error) { for i, s := range app.components { if err = s.Init(app); err != nil { closeServices(i) - return fmt.Errorf("can't init service '%s': %v", s.Name(), err) + return fmt.Errorf("can't init service '%s': %w", s.Name(), err) } } @@ -181,7 +181,7 @@ func (app *App) Start(ctx context.Context) (err error) { start := time.Now() if err = serviceRun.Run(ctx); err != nil { closeServices(i) - return fmt.Errorf("can't run service '%s': %v", serviceRun.Name(), err) + return fmt.Errorf("can't run service '%s': %w", serviceRun.Name(), err) } spent := time.Since(start).Milliseconds() app.startStat.SpentMsTotal += spent diff --git a/commonspace/spaceservice.go b/commonspace/spaceservice.go index 89e9283b..cf4a2710 100644 --- a/commonspace/spaceservice.go +++ b/commonspace/spaceservice.go @@ -17,6 +17,7 @@ import ( "github.com/anytypeio/any-sync/commonspace/syncstatus" "github.com/anytypeio/any-sync/net/peer" "github.com/anytypeio/any-sync/net/pool" + "github.com/anytypeio/any-sync/net/rpc/rpcerr" "github.com/anytypeio/any-sync/nodeconf" "sync/atomic" ) @@ -35,6 +36,7 @@ const AddSpaceCtxKey ctxKey = 0 type SpaceService interface { DeriveSpace(ctx context.Context, payload SpaceDerivePayload) (string, error) + DeriveId(ctx context.Context, payload SpaceDerivePayload) (string, error) CreateSpace(ctx context.Context, payload SpaceCreatePayload) (string, error) NewSpace(ctx context.Context, id string) (sp Space, err error) app.Component @@ -88,6 +90,15 @@ func (s *spaceService) CreateSpace(ctx context.Context, payload SpaceCreatePaylo return store.Id(), nil } +func (s *spaceService) DeriveId(ctx context.Context, payload SpaceDerivePayload) (id string, err error) { + storageCreate, err := storagePayloadForSpaceDerive(payload) + if err != nil { + return + } + id = storageCreate.SpaceHeaderWithId.Id + return +} + func (s *spaceService) DeriveSpace(ctx context.Context, payload SpaceDerivePayload) (id string, err error) { storageCreate, err := storagePayloadForSpaceDerive(payload) if err != nil { @@ -206,6 +217,7 @@ func (s *spaceService) getSpaceStorageFromRemote(ctx context.Context, id string) cl := spacesyncproto.NewDRPCSpaceSyncClient(p) res, err := cl.SpacePull(ctx, &spacesyncproto.SpacePullRequest{Id: id}) if err != nil { + err = rpcerr.Unwrap(err) return }