forked from jsnbuchanan/crowd-funder-for-time-pwa
finish the loading of an invite RegisterAction when clicking on a link
This commit is contained in:
@@ -44,7 +44,10 @@
|
||||
:key="invite.inviteIdentifier"
|
||||
class="border-t"
|
||||
>
|
||||
<td class="py-2 text-center">
|
||||
<td
|
||||
class="py-2 text-center text-blue-500"
|
||||
@click="copyInviteAndNotify(invite.jwt)"
|
||||
>
|
||||
{{ getTruncatedInviteId(invite.inviteIdentifier) }}
|
||||
</td>
|
||||
<td class="py-2 text-left">{{ invite.notes }}</td>
|
||||
@@ -62,19 +65,21 @@
|
||||
</section>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { Component, Vue } from "vue-facing-decorator";
|
||||
import axios from "axios";
|
||||
import { Component, Vue } from "vue-facing-decorator";
|
||||
import { useClipboard } from "@vueuse/core";
|
||||
|
||||
import { db, retrieveSettingsForActiveAccount } from "../db";
|
||||
import QuickNav from "@/components/QuickNav.vue";
|
||||
import TopMessage from "@/components/TopMessage.vue";
|
||||
import InviteDialog from "@/components/InviteDialog.vue";
|
||||
import { NotificationIface } from "@/constants/app";
|
||||
import { APP_SERVER, NotificationIface } from "@/constants/app";
|
||||
import { createInviteJwt, getHeaders } from "@/libs/endorserServer";
|
||||
|
||||
interface Invite {
|
||||
inviteIdentifier: string;
|
||||
expiresAt: string;
|
||||
jwt: string;
|
||||
notes: string;
|
||||
redeemedBy: string | null;
|
||||
}
|
||||
@@ -124,11 +129,25 @@ export default class InviteOneView extends Vue {
|
||||
}
|
||||
|
||||
getTruncatedRedeemedBy(redeemedBy: string | null): string {
|
||||
if (!redeemedBy) return "Not yet redeemed";
|
||||
if (!redeemedBy) return "";
|
||||
if (redeemedBy.length <= 19) return redeemedBy;
|
||||
return `${redeemedBy.slice(0, 13)}...${redeemedBy.slice(-3)}`;
|
||||
}
|
||||
|
||||
copyInviteAndNotify(jwt: string) {
|
||||
const link = APP_SERVER + "/contacts?inviteJwt=" + jwt;
|
||||
useClipboard().copy(link);
|
||||
this.$notify(
|
||||
{
|
||||
group: "alert",
|
||||
type: "success",
|
||||
title: "Copied",
|
||||
text: "Invitation link is copied to clipboard.",
|
||||
},
|
||||
3000,
|
||||
);
|
||||
}
|
||||
|
||||
async createInvite() {
|
||||
(this.$refs.inviteDialog as InviteDialog).open(
|
||||
"Invitation Note",
|
||||
@@ -148,8 +167,7 @@ export default class InviteOneView extends Vue {
|
||||
},
|
||||
};
|
||||
}
|
||||
const expiresIn =
|
||||
(new Date(expiresAt).getTime() - new Date().getTime()) / 1000;
|
||||
const expiresIn = (new Date(expiresAt).getTime() - Date.now()) / 1000;
|
||||
const inviteJwt = await createInviteJwt(
|
||||
this.activeDid,
|
||||
undefined,
|
||||
@@ -164,6 +182,7 @@ export default class InviteOneView extends Vue {
|
||||
this.invites.push({
|
||||
inviteIdentifier: inviteIdentifier,
|
||||
expiresAt: expiresAt,
|
||||
jwt: inviteJwt,
|
||||
notes: notes,
|
||||
redeemedBy: null,
|
||||
});
|
||||
@@ -176,7 +195,11 @@ export default class InviteOneView extends Vue {
|
||||
error.response.data &&
|
||||
error.response.data.error
|
||||
) {
|
||||
message = error.response.data.error;
|
||||
if (error.response.data.error.message) {
|
||||
message = error.response.data.error.message;
|
||||
} else {
|
||||
message = error.response.data.error;
|
||||
}
|
||||
}
|
||||
this.$notify(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user