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
|
||||||
USERFLAG_INVALID_RECIPIENT_WITH_INVITE
|
USERFLAG_INVALID_RECIPIENT_WITH_INVITE
|
||||||
USERFLAG_INCORRECTPIN
|
USERFLAG_INCORRECTPIN
|
||||||
|
USERFLAG_UNLOCKFORUPDATE
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -70,6 +71,193 @@ type fsData struct {
|
|||||||
st *state.State
|
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) {
|
func (fsd *fsData) SetLanguageSelected(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
inputStr := string(input)
|
inputStr := string(input)
|
||||||
res := resource.Result{}
|
res := resource.Result{}
|
||||||
@ -97,7 +285,18 @@ func (fsd *fsData) create_account(ctx context.Context, sym string, input []byte)
|
|||||||
}
|
}
|
||||||
f.Close()
|
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 {
|
if err != nil {
|
||||||
fmt.Println("Failed to create account:", err)
|
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
|
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) {
|
func (fsd *fsData) checkIdentifier(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
res := resource.Result{}
|
res := resource.Result{}
|
||||||
fp := fsd.path + "_data"
|
fp := fsd.path + "_data"
|
||||||
@ -154,9 +368,11 @@ func (fsd *fsData) unLock(ctx context.Context, sym string, input []byte) (resour
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
if fsd.st.MatchFlag(USERFLAG_ACCOUNT_UNLOCKED, false) {
|
if fsd.st.MatchFlag(USERFLAG_ACCOUNT_UNLOCKED, false) {
|
||||||
|
//res.FlagSet = append(res.FlagSet, USERFLAG_UNLOCKFORUPDATE)
|
||||||
res.FlagSet = append(res.FlagSet, USERFLAG_ACCOUNT_UNLOCKED)
|
res.FlagSet = append(res.FlagSet, USERFLAG_ACCOUNT_UNLOCKED)
|
||||||
} else {
|
} else {
|
||||||
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_UNLOCKED)
|
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_UNLOCKED)
|
||||||
|
//res.FlagReset = append(res.FlagReset, USERFLAG_UNLOCKFORUPDATE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res, nil
|
return res, nil
|
||||||
@ -173,6 +389,11 @@ func (fsd *fsData) ResetIncorrectPin(ctx context.Context, sym string, input []by
|
|||||||
return res, nil
|
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) {
|
func (fsd *fsData) check_account_status(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
res := resource.Result{}
|
res := resource.Result{}
|
||||||
fp := fsd.path + "_data"
|
fp := fsd.path + "_data"
|
||||||
@ -197,7 +418,7 @@ func (fsd *fsData) check_account_status(ctx context.Context, sym string, input [
|
|||||||
|
|
||||||
accountData["Status"] = status
|
accountData["Status"] = status
|
||||||
|
|
||||||
if status == "SUCCESS" {
|
if status == "REVERTED" {
|
||||||
res.FlagSet = append(res.FlagSet, USERFLAG_ACCOUNT_SUCCESS)
|
res.FlagSet = append(res.FlagSet, USERFLAG_ACCOUNT_SUCCESS)
|
||||||
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_PENDING)
|
res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_PENDING)
|
||||||
} else {
|
} else {
|
||||||
@ -456,6 +677,35 @@ func (fsd *fsData) get_recipient(ctx context.Context, sym string, input []byte)
|
|||||||
return res, nil
|
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) {
|
func (fsd *fsData) get_sender(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
res := resource.Result{}
|
res := resource.Result{}
|
||||||
fp := fsd.path + "_data"
|
fp := fsd.path + "_data"
|
||||||
@ -585,7 +835,20 @@ func main() {
|
|||||||
rfs.AddLocalFunc("get_recipient", fs.get_recipient)
|
rfs.AddLocalFunc("get_recipient", fs.get_recipient)
|
||||||
rfs.AddLocalFunc("get_sender", fs.get_sender)
|
rfs.AddLocalFunc("get_sender", fs.get_sender)
|
||||||
rfs.AddLocalFunc("reset_incorrect", fs.ResetIncorrectPin)
|
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("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)
|
cont, err := en.Init(ctx)
|
||||||
en.SetDebugger(engine.NewSimpleDebug(nil))
|
en.SetDebugger(engine.NewSimpleDebug(nil))
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
LOAD reset_unlocked 0
|
||||||
MOUT my_balance 1
|
MOUT my_balance 1
|
||||||
MOUT community_balance 2
|
MOUT community_balance 2
|
||||||
MOUT back 0
|
MOUT back 0
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
LOAD reset_unlocked 0
|
||||||
|
LOAD get_profile_info 0
|
||||||
MOUT edit_name 1
|
MOUT edit_name 1
|
||||||
MOUT edit_gender 2
|
MOUT edit_gender 2
|
||||||
MOUT edit_yob 3
|
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
|
MOUT back 0
|
||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
|
INCMP enter_offerings *
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
MOUT back 0
|
MOUT back 0
|
||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
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
|
MOUT back 0
|
||||||
HALT
|
HALT
|
||||||
|
LOAD save_offerings 0
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
|
INCMP pin_entry *
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
LOAD save_gender 0
|
||||||
MOUT back 0
|
MOUT back 0
|
||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
|
INCMP enter_location *
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
LOAD reset_unlock_for_update 0
|
||||||
MOUT profile 1
|
MOUT profile 1
|
||||||
MOUT change_language 2
|
MOUT change_language 2
|
||||||
MOUT check_balance 3
|
MOUT check_balance 3
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
|
LOAD save_familyname 0
|
||||||
MOUT male 1
|
MOUT male 1
|
||||||
MOUT female 2
|
MOUT female 2
|
||||||
MOUT other_gender 3
|
MOUT other_gender 3
|
||||||
MOUT back 0
|
MOUT back 0
|
||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
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
|
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