1// Copyright 2015 Keybase, Inc. All rights reserved. Use of
2// this source code is governed by the included BSD license.
3
4package engine
5
6import (
7	"github.com/keybase/client/go/libkb"
8	keybase1 "github.com/keybase/client/go/protocol/keybase1"
9)
10
11type ProfileEdit struct {
12	libkb.Contextified
13	arg keybase1.ProfileEditArg
14}
15
16func NewProfileEdit(g *libkb.GlobalContext, arg keybase1.ProfileEditArg) *ProfileEdit {
17	return &ProfileEdit{
18		Contextified: libkb.NewContextified(g),
19		arg:          arg,
20	}
21}
22
23func (e *ProfileEdit) Run(m libkb.MetaContext) (err error) {
24	defer m.Trace("ProfileEdit#Run", &err)()
25	_, err = m.G().API.Post(m, libkb.APIArg{
26		Endpoint:    "profile-edit",
27		SessionType: libkb.APISessionTypeREQUIRED,
28		Args: libkb.HTTPArgs{
29			"bio":       libkb.S{Val: e.arg.Bio},
30			"full_name": libkb.S{Val: e.arg.FullName},
31			"location":  libkb.S{Val: e.arg.Location},
32		},
33	})
34	if err != nil {
35		return err
36	}
37	u := m.G().ActiveDevice.UID()
38	m.Debug("Clearing Card cache for %s", u)
39	_ = e.G().CardCache().Delete(u)
40	_ = e.G().UIDMapper.ClearUIDFullName(m.Ctx(), m.G(), u)
41	return nil
42}
43
44// Name is the unique engine name.
45func (e *ProfileEdit) Name() string {
46	return "ProfileEdit"
47}
48
49// GetPrereqs returns the engine prereqs (none).
50func (e *ProfileEdit) Prereqs() Prereqs {
51	return Prereqs{}
52}
53
54func (e *ProfileEdit) RequiredUIs() []libkb.UIKind {
55	return nil
56}
57
58func (e *ProfileEdit) SubConsumers() []libkb.UIConsumer {
59	return nil
60}
61