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

rewrite builtinobjects comp init and run

rely on the NewAccount from cfg
This commit is contained in:
Roman Khafizianov 2021-12-13 13:18:36 +01:00
parent 96419f497e
commit 0294669bda
No known key found for this signature in database
GPG key ID: F07A7D55A2684852
3 changed files with 34 additions and 24 deletions

View file

@ -6,7 +6,6 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"github.com/anytypeio/go-anytype-middleware/util/builtinobjects"
"io/ioutil"
"net/http"
"os"
@ -185,19 +184,12 @@ func (mw *Middleware) AccountCreate(req *pb.RpcAccountCreateRequest) *pb.RpcAcco
}
comps = append(comps, mw.EventSender)
comps = append(comps, builtinobjects.New())
if mw.app, err = anytype.StartNewApp(comps...); err != nil {
return response(newAcc, pb.RpcAccountCreateResponseError_ACCOUNT_CREATED_BUT_FAILED_TO_START_NODE, err)
}
coreService := mw.app.MustComponent(core.CName).(core.Service)
go func() {
err = mw.app.MustComponent(builtinobjects.CName).(builtinobjects.BuiltinObjects).Inject(context.Background())
if err != nil {
log.Errorf("failed to import get builtin objects: %s", err.Error())
}
}()
newAcc.Name = req.Name
bs := mw.app.MustComponent(block.CName).(block.Service)

View file

@ -31,6 +31,7 @@ import (
"github.com/anytypeio/go-anytype-middleware/pkg/lib/profilefinder"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/threads"
walletUtil "github.com/anytypeio/go-anytype-middleware/pkg/lib/wallet"
"github.com/anytypeio/go-anytype-middleware/util/builtinobjects"
"github.com/anytypeio/go-anytype-middleware/util/builtintemplate"
"github.com/anytypeio/go-anytype-middleware/util/linkpreview"
)
@ -111,6 +112,7 @@ func Bootstrap(a *app.App, components ...app.Component) {
Register(linkpreview.New()).
Register(restriction.New()).
Register(debug.New()).
Register(doc.New())
Register(doc.New()).
Register(builtinobjects.New())
return
}

View file

@ -6,6 +6,7 @@ import (
"context"
_ "embed"
"fmt"
"github.com/anytypeio/go-anytype-middleware/core/anytype/config"
"github.com/anytypeio/go-anytype-middleware/core/block"
"github.com/anytypeio/go-anytype-middleware/core/block/simple/link"
"github.com/anytypeio/go-anytype-middleware/core/block/simple/text"
@ -48,21 +49,23 @@ func New() BuiltinObjects {
}
type BuiltinObjects interface {
Inject(ctx context.Context) error
app.Component
app.ComponentRunnable
}
type builtinObjects struct {
cancel func()
l sync.Mutex
source source.Service
service block.Service
idsMap map[string]string
cancel func()
l sync.Mutex
source source.Service
service block.Service
newAccount bool
idsMap map[string]string
}
func (b *builtinObjects) Init(a *app.App) (err error) {
b.source = a.MustComponent(source.CName).(source.Service)
b.service = a.MustComponent(block.CName).(block.Service)
b.newAccount = a.MustComponent(config.CName).(*config.Config).NewAccount
b.cancel = func() {}
return
}
@ -71,11 +74,25 @@ func (b *builtinObjects) Name() (name string) {
return CName
}
func (b *builtinObjects) Inject(ctx context.Context) (err error) {
var ctx2 context.Context
b.l.Lock()
ctx2, b.cancel = context.WithCancel(ctx)
b.l.Unlock()
func (b *builtinObjects) Run() (err error) {
if !b.newAccount {
// import only for new accounts
return
}
var ctx context.Context
ctx, b.cancel = context.WithCancel(context.Background())
go func() {
err = b.inject(ctx)
if err != nil {
log.Errorf("failed to import builtinObjects: %s", err.Error())
}
}()
return
}
func (b *builtinObjects) inject(ctx context.Context) (err error) {
zr, err := zip.NewReader(bytes.NewReader(objectsZip), int64(len(objectsZip)))
if err != nil {
return
@ -99,12 +116,11 @@ func (b *builtinObjects) Inject(ctx context.Context) (err error) {
if e != nil {
return e
}
if err = b.createObject(ctx2, rd); err != nil {
if err = b.createObject(ctx, rd); err != nil {
return
}
}
return
return nil
}
func (b *builtinObjects) createObject(ctx context.Context, rd io.ReadCloser) (err error) {