implement profile data persistence
This commit is contained in:
parent
075355980a
commit
722bb10441
267
cmd/main.go
267
cmd/main.go
@ -27,6 +27,7 @@ const (
|
||||
USERFLAG_INVALID_RECIPIENT
|
||||
USERFLAG_INVALID_RECIPIENT_WITH_INVITE
|
||||
USERFLAG_INCORRECTPIN
|
||||
USERFLAG_UNLOCKFORUPDATE
|
||||
)
|
||||
|
||||
const (
|
||||
@ -70,6 +71,193 @@ type fsData struct {
|
||||
st *state.State
|
||||
}
|
||||
|
||||
func (fsd *fsData) saveFirstName(cxt context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if len(input) > 0 {
|
||||
name := string(input)
|
||||
accountData["FirstName"] = name
|
||||
updatedJsonData, err := json.Marshal(accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
err = os.WriteFile(fp, updatedJsonData, 0644)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) saveFamilyName(cxt context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if len(input) > 0 {
|
||||
//Save name
|
||||
secondname := string(input)
|
||||
fmt.Println("FamilyName:", secondname)
|
||||
accountData["FamilyName"] = secondname
|
||||
updatedJsonData, err := json.Marshal(accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
err = os.WriteFile(fp, updatedJsonData, 0644)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
func (fsd *fsData) saveYOB(cxt context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if len(input) > 0 {
|
||||
yob := string(input)
|
||||
fmt.Println("YOB", yob)
|
||||
accountData["YOB"] = yob
|
||||
updatedJsonData, err := json.Marshal(accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
err = os.WriteFile(fp, updatedJsonData, 0644)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) saveLocation(cxt context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if len(input) > 0 {
|
||||
location := string(input)
|
||||
fmt.Println("Location:", location)
|
||||
accountData["Location"] = location
|
||||
updatedJsonData, err := json.Marshal(accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
err = os.WriteFile(fp, updatedJsonData, 0644)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) saveGender(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if len(input) > 0 {
|
||||
gender := string(input)
|
||||
|
||||
switch gender {
|
||||
case "1" : gender = "Male"
|
||||
case "2" : gender = "Female"
|
||||
case "3" : gender = "Other"
|
||||
}
|
||||
fmt.Println("gender", gender)
|
||||
accountData["Gender"] = gender
|
||||
updatedJsonData, err := json.Marshal(accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
err = os.WriteFile(fp, updatedJsonData, 0644)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) saveOfferings(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if len(input) > 0 {
|
||||
offerings := string(input)
|
||||
fmt.Println("Offerings:", offerings)
|
||||
accountData["Offerings"] = offerings
|
||||
updatedJsonData, err := json.Marshal(accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
err = os.WriteFile(fp, updatedJsonData, 0644)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) SetLanguageSelected(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
inputStr := string(input)
|
||||
res := resource.Result{}
|
||||
@ -97,7 +285,18 @@ func (fsd *fsData) create_account(ctx context.Context, sym string, input []byte)
|
||||
}
|
||||
f.Close()
|
||||
|
||||
accountResp, err := createAccount()
|
||||
//accountResp, err := createAccount()
|
||||
accountResp := accountResponse{
|
||||
Ok: true,
|
||||
Result: struct {
|
||||
CustodialId json.Number `json:"custodialId"`
|
||||
PublicKey string `json:"publicKey"`
|
||||
TrackingId string `json:"trackingId"`
|
||||
}{
|
||||
CustodialId: "636",
|
||||
PublicKey: "0x8d86F9D4A4eae41Dc3B68034895EA97BcA90e8c1",
|
||||
TrackingId: "45c67314-7995-4890-89d6-e5af987754ac",
|
||||
}}
|
||||
|
||||
if err != nil {
|
||||
fmt.Println("Failed to create account:", err)
|
||||
@ -124,6 +323,21 @@ func (fsd *fsData) create_account(ctx context.Context, sym string, input []byte)
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (fsd *fsData) resetUnlockForUpdate(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
res.FlagReset = append(res.FlagReset, USERFLAG_UNLOCKFORUPDATE)
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) resetAccountUnlocked(ctx context.Context,sym string,input []byte) (resource.Result,error){
|
||||
res := resource.Result{}
|
||||
st := fsd.st
|
||||
isSet := st.MatchFlag(USERFLAG_ACCOUNT_UNLOCKED,true)
|
||||
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_UNLOCKED)
|
||||
fmt.Println("ISSET:",isSet)
|
||||
return res,nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) checkIdentifier(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
@ -154,9 +368,11 @@ func (fsd *fsData) unLock(ctx context.Context, sym string, input []byte) (resour
|
||||
return res, nil
|
||||
}
|
||||
if fsd.st.MatchFlag(USERFLAG_ACCOUNT_UNLOCKED, false) {
|
||||
//res.FlagSet = append(res.FlagSet, USERFLAG_UNLOCKFORUPDATE)
|
||||
res.FlagSet = append(res.FlagSet, USERFLAG_ACCOUNT_UNLOCKED)
|
||||
} else {
|
||||
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_UNLOCKED)
|
||||
//res.FlagReset = append(res.FlagReset, USERFLAG_UNLOCKFORUPDATE)
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
@ -173,6 +389,11 @@ func (fsd *fsData) ResetIncorrectPin(ctx context.Context, sym string, input []by
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) ShowUpdateSuccess(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) check_account_status(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
@ -197,7 +418,7 @@ func (fsd *fsData) check_account_status(ctx context.Context, sym string, input [
|
||||
|
||||
accountData["Status"] = status
|
||||
|
||||
if status == "SUCCESS" {
|
||||
if status == "REVERTED" {
|
||||
res.FlagSet = append(res.FlagSet, USERFLAG_ACCOUNT_SUCCESS)
|
||||
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_PENDING)
|
||||
} else {
|
||||
@ -456,6 +677,35 @@ func (fsd *fsData) get_recipient(ctx context.Context, sym string, input []byte)
|
||||
return res, nil
|
||||
}
|
||||
|
||||
|
||||
func (fsd *fsData) getProfileInfo(ctx context.Context,sym string,input []byte) (resource.Result,error){
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
|
||||
jsonData, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
var accountData map[string]string
|
||||
err = json.Unmarshal(jsonData, &accountData)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
name := accountData["FirstName"]
|
||||
gender := accountData["Gender"]
|
||||
age := accountData["YOB"]
|
||||
location := accountData["Location"]
|
||||
|
||||
// Format the data into a string
|
||||
formattedData := fmt.Sprintf("Name: %s\nGender: %s\nAge: %s\nLocation: %s\n", name, gender, age, location)
|
||||
|
||||
|
||||
res.Content = formattedData
|
||||
|
||||
return res,nil
|
||||
}
|
||||
|
||||
func (fsd *fsData) get_sender(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
fp := fsd.path + "_data"
|
||||
@ -585,7 +835,20 @@ func main() {
|
||||
rfs.AddLocalFunc("get_recipient", fs.get_recipient)
|
||||
rfs.AddLocalFunc("get_sender", fs.get_sender)
|
||||
rfs.AddLocalFunc("reset_incorrect", fs.ResetIncorrectPin)
|
||||
rfs.AddLocalFunc("save_firstname", fs.saveFirstName)
|
||||
rfs.AddLocalFunc("save_familyname", fs.saveFamilyName)
|
||||
rfs.AddLocalFunc("save_gender", fs.saveGender)
|
||||
rfs.AddLocalFunc("save_location", fs.saveLocation)
|
||||
rfs.AddLocalFunc("save_yob", fs.saveYOB)
|
||||
rfs.AddLocalFunc("save_offerings", fs.saveOfferings)
|
||||
rfs.AddLocalFunc("quit_with_balance", fs.quitWithBalance)
|
||||
rfs.AddLocalFunc("show_update_success", fs.ShowUpdateSuccess)
|
||||
rfs.AddLocalFunc("reset_unlocked",fs.resetAccountUnlocked)
|
||||
rfs.AddLocalFunc("reset_unlock_for_update", fs.resetUnlockForUpdate)
|
||||
rfs.AddLocalFunc("get_profile_info",fs.getProfileInfo)
|
||||
|
||||
|
||||
|
||||
|
||||
cont, err := en.Init(ctx)
|
||||
en.SetDebugger(engine.NewSimpleDebug(nil))
|
||||
|
@ -1,3 +1,4 @@
|
||||
LOAD reset_unlocked 0
|
||||
MOUT my_balance 1
|
||||
MOUT community_balance 2
|
||||
MOUT back 0
|
||||
|
@ -1,3 +1,5 @@
|
||||
LOAD reset_unlocked 0
|
||||
LOAD get_profile_info 0
|
||||
MOUT edit_name 1
|
||||
MOUT edit_gender 2
|
||||
MOUT edit_yob 3
|
||||
|
1
services/registration/enter_familyname
Normal file
1
services/registration/enter_familyname
Normal file
@ -0,0 +1 @@
|
||||
Enter family name:
|
6
services/registration/enter_familyname.vis
Normal file
6
services/registration/enter_familyname.vis
Normal file
@ -0,0 +1,6 @@
|
||||
LOAD save_firstname 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP select_gender *
|
||||
|
0
services/registration/enter_familyname_swa
Normal file
0
services/registration/enter_familyname_swa
Normal file
@ -1,3 +1,5 @@
|
||||
LOAD save_yob 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP enter_offerings *
|
||||
|
@ -1,3 +1,4 @@
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP enter_familyname *
|
||||
|
@ -1,3 +1,10 @@
|
||||
LOAD save_location 0
|
||||
CATCH incorrect_pin 15 1
|
||||
CATCH update_success 16 1
|
||||
MOUT back 0
|
||||
HALT
|
||||
LOAD save_offerings 0
|
||||
INCMP _ 0
|
||||
INCMP pin_entry *
|
||||
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
LOAD save_gender 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP enter_location *
|
||||
|
@ -1,3 +1,4 @@
|
||||
LOAD reset_unlock_for_update 0
|
||||
MOUT profile 1
|
||||
MOUT change_language 2
|
||||
MOUT check_balance 3
|
||||
|
@ -1,6 +1,10 @@
|
||||
LOAD save_familyname 0
|
||||
MOUT male 1
|
||||
MOUT female 2
|
||||
MOUT other_gender 3
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP enter_yob 1
|
||||
INCMP enter_yob 2
|
||||
INCMP enter_yob 3
|
||||
|
1
services/registration/update_success
Normal file
1
services/registration/update_success
Normal file
@ -0,0 +1 @@
|
||||
Profile updated successfully
|
3
services/registration/update_success.vis
Normal file
3
services/registration/update_success.vis
Normal file
@ -0,0 +1,3 @@
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP ^ 0
|
1
services/registration/update_success_swa
Normal file
1
services/registration/update_success_swa
Normal file
@ -0,0 +1 @@
|
||||
Akaunti imeupdatiwa
|
2
services/registration/view_profile
Normal file
2
services/registration/view_profile
Normal file
@ -0,0 +1,2 @@
|
||||
My profile:
|
||||
{{.get_profile_info}}
|
@ -1 +1,8 @@
|
||||
LOAD get_profile_info 0
|
||||
MAP get_profile_info
|
||||
LOAD reset_incorrect 0
|
||||
CATCH incorrect_pin 15 1
|
||||
CATCH pin_entry 12 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
|
1
services/registration/view_profile_swa
Normal file
1
services/registration/view_profile_swa
Normal file
@ -0,0 +1 @@
|
||||
Wasifu wangu
|
Loading…
Reference in New Issue
Block a user