Fix a bug in HomeView and clean up recordGive method

This commit is contained in:
Matthew Raymer
2023-07-07 18:43:16 +08:00
parent 08137eb000
commit dc23ba1375

View File

@@ -98,6 +98,29 @@ export default class HomeView extends Vue {
alertTitle = ""; alertTitle = "";
alertMessage = ""; alertMessage = "";
public async getIdentity(activeDid) {
await accountsDB.open();
const accounts = await accountsDB.accounts.toArray();
const account = R.find((acc) => acc.did === activeDid, accounts);
const identity = JSON.parse(account?.identity || "null");
if (!identity) {
throw new Error(
"Attempted to load Give records with no identity available.",
);
}
return identity;
}
public async getHeaders(identity) {
const token = await accessToken(identity);
const headers = {
"Content-Type": "application/json",
Authorization: "Bearer " + token,
};
return headers;
}
async created() { async created() {
try { try {
await accountsDB.open(); await accountsDB.open();
@@ -254,51 +277,57 @@ export default class HomeView extends Vue {
* @param description may be an empty string * @param description may be an empty string
* @param hours may be 0 * @param hours may be 0
*/ */
recordGive(giverDid, description, hours) { public async recordGive(giverDid, description, hours) {
if (!this.activeDid) { if (!this.activeDid) {
this.alertTitle = "Error"; this.setAlert(
this.alertMessage = "Error",
"You must select an identity before you can record a give."; "You must select an identity before you can record a give.",
);
return; return;
} }
if (!description && !hours) { if (!description && !hours) {
this.alertTitle = "Error"; this.setAlert(
this.alertMessage = "Error",
"You must enter a description or some number of hours."; "You must enter a description or some number of hours.",
);
return; return;
} }
const identity = await this.getIdentity(this.activeDid); try {
const identity = await this.getIdentity(this.activeDid);
const result = await createAndSubmitGive(
this.axios,
this.apiServer,
identity,
giverDid,
this.activeDid,
description,
hours,
);
createAndSubmitGive( if (isGiveCreationError(result)) {
this.axios, const errorMessage = getGiveCreationErrorMessage(result);
this.apiServer, console.log("Error with give result:", result);
identity, this.setAlert(
giverDid, "Error",
this.activeDid, errorMessage || "There was an error recording the give.",
description, );
hours, } else {
) this.setAlert("Success", "That gift was recorded.");
.then((result) => { }
if (isGiveCreationError(result)) { } catch (error) {
const errorMessage = getGiveCreationErrorMessage(result); console.log("Error with give caught:", error);
console.log("Error with give result:", result); this.setAlert(
this.alertTitle = "Error"; "Error",
this.alertMessage = getGiveErrorMessage(error) || "There was an error recording the give.",
errorMessage || "There was an error recording the give."; );
} else { }
this.alertTitle = "Success"; }
this.alertMessage = "That gift was recorded.";
} private setAlert(title, message) {
}) this.alertTitle = title;
.catch((error) => { this.alertMessage = message;
console.log("Error with give caught:", error);
this.alertTitle = "Error";
this.alertMessage =
getGiveErrorMessage(error) ||
"There was an error recording the give.";
});
} }
// Helper functions for readability // Helper functions for readability