Browse Source

Fix a bug in HomeView and clean up recordGive method

pull/35/head
Matthew Raymer 1 year ago
parent
commit
dc23ba1375
  1. 101
      src/views/HomeView.vue

101
src/views/HomeView.vue

@ -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,
);
if (isGiveCreationError(result)) {
const errorMessage = getGiveCreationErrorMessage(result);
console.log("Error with give result:", result);
this.setAlert(
"Error",
errorMessage || "There was an error recording the give.",
);
} else {
this.setAlert("Success", "That gift was recorded.");
}
} catch (error) {
console.log("Error with give caught:", error);
this.setAlert(
"Error",
getGiveErrorMessage(error) || "There was an error recording the give.",
);
}
}
createAndSubmitGive( private setAlert(title, message) {
this.axios, this.alertTitle = title;
this.apiServer, this.alertMessage = message;
identity,
giverDid,
this.activeDid,
description,
hours,
)
.then((result) => {
if (isGiveCreationError(result)) {
const errorMessage = getGiveCreationErrorMessage(result);
console.log("Error with give result:", result);
this.alertTitle = "Error";
this.alertMessage =
errorMessage || "There was an error recording the give.";
} else {
this.alertTitle = "Success";
this.alertMessage = "That gift was recorded.";
}
})
.catch((error) => {
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

Loading…
Cancel
Save