constantly recheck on home screen if not registered
This commit is contained in:
@@ -1,9 +1,15 @@
|
|||||||
import { Axios, AxiosResponse, RawAxiosRequestHeaders } from "axios";
|
import {
|
||||||
|
Axios,
|
||||||
|
AxiosRequestConfig,
|
||||||
|
AxiosResponse,
|
||||||
|
RawAxiosRequestHeaders,
|
||||||
|
} from "axios";
|
||||||
import * as didJwt from "did-jwt";
|
import * as didJwt from "did-jwt";
|
||||||
import { LRUCache } from "lru-cache";
|
import { LRUCache } from "lru-cache";
|
||||||
import * as R from "ramda";
|
import * as R from "ramda";
|
||||||
import { IIdentifier } from "@veramo/core";
|
import { IIdentifier } from "@veramo/core";
|
||||||
|
|
||||||
|
import { DEFAULT_IMAGE_API_SERVER } from "@/constants/app";
|
||||||
import { Contact } from "@/db/tables/contacts";
|
import { Contact } from "@/db/tables/contacts";
|
||||||
import { accessToken, SimpleSigner } from "@/libs/crypto";
|
import { accessToken, SimpleSigner } from "@/libs/crypto";
|
||||||
import { NonsensitiveDexie } from "@/db/index";
|
import { NonsensitiveDexie } from "@/db/index";
|
||||||
@@ -1007,3 +1013,39 @@ export async function setVisibilityUtil(
|
|||||||
return { error: "Check connectivity and try again." };
|
return { error: "Check connectivity and try again." };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches rate limits from the Endorser server.
|
||||||
|
*
|
||||||
|
* @param apiServer endorser server URL string
|
||||||
|
* @param axios Axios instance
|
||||||
|
* @param {IIdentifier} identity - The identity object to check rate limits for.
|
||||||
|
* @returns {Promise<AxiosResponse>} The Axios response object.
|
||||||
|
*/
|
||||||
|
export async function fetchEndorserRateLimits(
|
||||||
|
apiServer: string,
|
||||||
|
axios: Axios,
|
||||||
|
identity: IIdentifier,
|
||||||
|
) {
|
||||||
|
const url = `${apiServer}/api/report/rateLimits`;
|
||||||
|
const headers = await getHeaders(identity);
|
||||||
|
return await axios.get(url, { headers } as AxiosRequestConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches rate limits from the image server.
|
||||||
|
*
|
||||||
|
* @param apiServer image server URL string
|
||||||
|
* @param axios Axios instance
|
||||||
|
* @param {IIdentifier} identity - The identity object to check rate limits for.
|
||||||
|
* @returns {Promise<AxiosResponse>} The Axios response object.
|
||||||
|
*/
|
||||||
|
export async function fetchImageRateLimits(
|
||||||
|
apiServer: string,
|
||||||
|
axios: Axios,
|
||||||
|
identity: IIdentifier,
|
||||||
|
) {
|
||||||
|
const url = DEFAULT_IMAGE_API_SERVER + "/image-limits";
|
||||||
|
const headers = await getHeaders(identity);
|
||||||
|
return await axios.get(url, { headers } as AxiosRequestConfig);
|
||||||
|
}
|
||||||
|
|||||||
@@ -612,7 +612,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { AxiosError, AxiosRequestConfig } from "axios";
|
import { AxiosError } from "axios";
|
||||||
import Dexie from "dexie";
|
import Dexie from "dexie";
|
||||||
import "dexie-export-import";
|
import "dexie-export-import";
|
||||||
import { ImportProgress } from "dexie-export-import/dist/import";
|
import { ImportProgress } from "dexie-export-import/dist/import";
|
||||||
@@ -637,6 +637,8 @@ import {
|
|||||||
ErrorResponse,
|
ErrorResponse,
|
||||||
EndorserRateLimits,
|
EndorserRateLimits,
|
||||||
ImageRateLimits,
|
ImageRateLimits,
|
||||||
|
fetchEndorserRateLimits,
|
||||||
|
fetchImageRateLimits,
|
||||||
} from "@/libs/endorserServer";
|
} from "@/libs/endorserServer";
|
||||||
import { Buffer } from "buffer/";
|
import { Buffer } from "buffer/";
|
||||||
import EntityIcon from "@/components/EntityIcon.vue";
|
import EntityIcon from "@/components/EntityIcon.vue";
|
||||||
@@ -1202,7 +1204,11 @@ export default class AccountViewView extends Vue {
|
|||||||
this.limitsMessage = "";
|
this.limitsMessage = "";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const resp = await this.fetchEndorserRateLimits(identity);
|
const resp = await fetchEndorserRateLimits(
|
||||||
|
this.apiServer,
|
||||||
|
this.axios,
|
||||||
|
identity,
|
||||||
|
);
|
||||||
if (resp.status === 200) {
|
if (resp.status === 200) {
|
||||||
this.endorserLimits = resp.data;
|
this.endorserLimits = resp.data;
|
||||||
if (!this.isRegistered) {
|
if (!this.isRegistered) {
|
||||||
@@ -1226,7 +1232,11 @@ export default class AccountViewView extends Vue {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const imageResp = await this.fetchImageRateLimits(identity);
|
const imageResp = await fetchImageRateLimits(
|
||||||
|
this.apiServer,
|
||||||
|
this.axios,
|
||||||
|
identity,
|
||||||
|
);
|
||||||
if (imageResp.status === 200) {
|
if (imageResp.status === 200) {
|
||||||
this.imageLimits = imageResp.data;
|
this.imageLimits = imageResp.data;
|
||||||
}
|
}
|
||||||
@@ -1249,30 +1259,6 @@ export default class AccountViewView extends Vue {
|
|||||||
this.loadingLimits = false;
|
this.loadingLimits = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches rate limits from the Endorser server.
|
|
||||||
*
|
|
||||||
* @param {IIdentifier} identity - The identity object to check rate limits for.
|
|
||||||
* @returns {Promise<AxiosResponse>} The Axios response object.
|
|
||||||
*/
|
|
||||||
private async fetchEndorserRateLimits(identity: IIdentifier) {
|
|
||||||
const url = `${this.apiServer}/api/report/rateLimits`;
|
|
||||||
const headers = await this.getHeaders(identity);
|
|
||||||
return await this.axios.get(url, { headers } as AxiosRequestConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches rate limits from the image server.
|
|
||||||
*
|
|
||||||
* @param {IIdentifier} identity - The identity object to check rate limits for.
|
|
||||||
* @returns {Promise<AxiosResponse>} The Axios response object.
|
|
||||||
*/
|
|
||||||
private async fetchImageRateLimits(identity: IIdentifier) {
|
|
||||||
const url = DEFAULT_IMAGE_API_SERVER + "/image-limits";
|
|
||||||
const headers = await this.getHeaders(identity);
|
|
||||||
return await this.axios.get(url, { headers } as AxiosRequestConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles errors that occur while fetching rate limits.
|
* Handles errors that occur while fetching rate limits.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -300,6 +300,7 @@
|
|||||||
import { UAParser } from "ua-parser-js";
|
import { UAParser } from "ua-parser-js";
|
||||||
import { IIdentifier } from "@veramo/core";
|
import { IIdentifier } from "@veramo/core";
|
||||||
import { Component, Vue } from "vue-facing-decorator";
|
import { Component, Vue } from "vue-facing-decorator";
|
||||||
|
import { Router } from "vue-router";
|
||||||
|
|
||||||
import EntityIcon from "@/components/EntityIcon.vue";
|
import EntityIcon from "@/components/EntityIcon.vue";
|
||||||
import GiftedDialog from "@/components/GiftedDialog.vue";
|
import GiftedDialog from "@/components/GiftedDialog.vue";
|
||||||
@@ -323,6 +324,7 @@ import {
|
|||||||
contactForDid,
|
contactForDid,
|
||||||
containsNonHiddenDid,
|
containsNonHiddenDid,
|
||||||
didInfoForContact,
|
didInfoForContact,
|
||||||
|
fetchEndorserRateLimits,
|
||||||
getPlanFromCache,
|
getPlanFromCache,
|
||||||
GiverReceiverInputInfo,
|
GiverReceiverInputInfo,
|
||||||
GiveSummaryRecord,
|
GiveSummaryRecord,
|
||||||
@@ -378,7 +380,7 @@ export default class HomeView extends Vue {
|
|||||||
showShortcutBvc = false;
|
showShortcutBvc = false;
|
||||||
userAgentInfo = new UAParser(); // see https://docs.uaparser.js.org/v2/api/ua-parser-js/get-os.html
|
userAgentInfo = new UAParser(); // see https://docs.uaparser.js.org/v2/api/ua-parser-js/get-os.html
|
||||||
|
|
||||||
public async getIdentity(activeDid: string) {
|
public async getIdentity(activeDid: string): Promise<IIdentifier | null> {
|
||||||
await accountsDB.open();
|
await accountsDB.open();
|
||||||
const account = (await accountsDB.accounts
|
const account = (await accountsDB.accounts
|
||||||
.where("did")
|
.where("did")
|
||||||
@@ -424,8 +426,29 @@ export default class HomeView extends Vue {
|
|||||||
this.isCreatingIdentifier = false;
|
this.isCreatingIdentifier = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// this returns a Promise but we don't need to wait for it
|
// someone may have have registered after sharing contact info
|
||||||
|
if (!this.isRegistered && this.activeDid) {
|
||||||
|
const identity = await this.getIdentity(this.activeDid);
|
||||||
|
try {
|
||||||
|
const resp = await fetchEndorserRateLimits(
|
||||||
|
this.apiServer,
|
||||||
|
this.axios,
|
||||||
|
identity as IIdentifier,
|
||||||
|
);
|
||||||
|
if (resp.status === 200) {
|
||||||
|
// we just needed to know that they're registered
|
||||||
|
await db.open();
|
||||||
|
db.settings.update(MASTER_SETTINGS_KEY, {
|
||||||
|
isRegistered: true,
|
||||||
|
});
|
||||||
|
this.isRegistered = true;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// ignore the error... just keep us unregistered
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// this returns a Promise but we don't need to wait for it
|
||||||
await this.updateAllFeed();
|
await this.updateAllFeed();
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
@@ -713,7 +736,7 @@ export default class HomeView extends Vue {
|
|||||||
const route = {
|
const route = {
|
||||||
path: "/claim/" + encodeURIComponent(jwtId),
|
path: "/claim/" + encodeURIComponent(jwtId),
|
||||||
};
|
};
|
||||||
this.$router.push(route);
|
(this.$router as Router).push(route);
|
||||||
}
|
}
|
||||||
|
|
||||||
displayAmount(code: string, amt: number) {
|
displayAmount(code: string, amt: number) {
|
||||||
|
|||||||
Reference in New Issue
Block a user