forked from jsnbuchanan/crowd-funder-for-time-pwa
Merge branch 'master' into fix-deep-link
This commit is contained in:
@@ -60,9 +60,13 @@ export interface AxiosErrorResponse {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
status?: number;
|
||||
statusText?: string;
|
||||
config?: unknown;
|
||||
};
|
||||
config?: unknown;
|
||||
config?: {
|
||||
url?: string;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
|
||||
@@ -124,17 +124,11 @@ export class ProfileService {
|
||||
async deleteProfile(activeDid: string): Promise<boolean> {
|
||||
try {
|
||||
const headers = await getHeaders(activeDid);
|
||||
logger.debug("Attempting to delete profile for DID:", activeDid);
|
||||
logger.debug("Using partner API server:", this.partnerApiServer);
|
||||
logger.debug("Request headers:", headers);
|
||||
|
||||
const url = `${this.partnerApiServer}/api/partner/userProfile`;
|
||||
logger.debug("DELETE request URL:", url);
|
||||
|
||||
const response = await this.axios.delete(url, { headers });
|
||||
|
||||
if (response.status === 200 || response.status === 204) {
|
||||
logger.debug("Profile deleted successfully");
|
||||
if (response.status === 204 || response.status === 200) {
|
||||
logger.info("Profile deleted successfully");
|
||||
return true;
|
||||
} else {
|
||||
logger.error("Unexpected response status when deleting profile:", {
|
||||
@@ -248,7 +242,7 @@ export class ProfileService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Type guard for API errors
|
||||
* Type guard for API errors with proper typing
|
||||
*/
|
||||
private isApiError(error: unknown): error is {
|
||||
response?: {
|
||||
@@ -276,6 +270,17 @@ export class ProfileService {
|
||||
private isAxiosError(error: unknown): error is AxiosError {
|
||||
return error instanceof AxiosError;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract error URL safely from error object
|
||||
*/
|
||||
private getErrorUrl(error: unknown): string | undefined {
|
||||
if (this.isApiError(error) && error.config) {
|
||||
const config = error.config as { url?: string };
|
||||
return config.url;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -182,9 +182,6 @@
|
||||
@change="onLocationCheckboxChange"
|
||||
/>
|
||||
<label for="includeUserProfileLocation">Include Location</label>
|
||||
<span class="text-xs text-slate-400 ml-2"
|
||||
>(Debug: {{ isMapReady ? "Map Ready" : "Map Loading" }})</span
|
||||
>
|
||||
</div>
|
||||
<div v-if="includeUserProfileLocation" class="mb-4 aspect-video">
|
||||
<p class="text-sm mb-2 text-slate-500">
|
||||
@@ -924,8 +921,11 @@ export default class AccountViewView extends Vue {
|
||||
// Fix Leaflet icon issues in modern bundlers
|
||||
// This prevents the "Cannot read properties of undefined (reading 'Default')" error
|
||||
if (L.Icon.Default) {
|
||||
delete (L.Icon.Default.prototype as { _getIconUrl?: unknown })
|
||||
._getIconUrl;
|
||||
// Type-safe way to handle Leaflet icon prototype
|
||||
const iconDefault = L.Icon.Default.prototype as Record<string, unknown>;
|
||||
if ("_getIconUrl" in iconDefault) {
|
||||
delete iconDefault._getIconUrl;
|
||||
}
|
||||
L.Icon.Default.mergeOptions({
|
||||
iconRetinaUrl:
|
||||
"https://unpkg.com/leaflet@1.7.1/dist/images/marker-icon-2x.png",
|
||||
|
||||
Reference in New Issue
Block a user