forked from trent_larson/crowd-funder-for-time-pwa
chore: linted with auto-fix
This commit is contained in:
@@ -1,16 +1,9 @@
|
||||
/**
|
||||
* Data Export Section Component
|
||||
*
|
||||
* Provides UI and functionality for exporting user data and backing up identifier seeds.
|
||||
* Includes buttons for seed backup and database export, with platform-specific download instructions.
|
||||
*
|
||||
* @component
|
||||
* @displayName DataExportSection
|
||||
* @example
|
||||
* ```vue
|
||||
* <DataExportSection :active-did="currentDid" />
|
||||
* ```
|
||||
*/
|
||||
/** * Data Export Section Component * * Provides UI and functionality for
|
||||
exporting user data and backing up identifier seeds. * Includes buttons for seed
|
||||
backup and database export, with platform-specific download instructions. * *
|
||||
@component * @displayName DataExportSection * @example * ```vue *
|
||||
<DataExportSection :active-did="currentDid" />
|
||||
* ``` */
|
||||
|
||||
<template>
|
||||
<div
|
||||
@@ -42,17 +35,23 @@
|
||||
>
|
||||
If no download happened yet, click again here to download now.
|
||||
</a>
|
||||
<div class="mt-4" v-if="platformCapabilities.needsFileHandlingInstructions">
|
||||
<div v-if="platformCapabilities.needsFileHandlingInstructions" class="mt-4">
|
||||
<p>
|
||||
After the download, you can save the file in your preferred storage
|
||||
location.
|
||||
</p>
|
||||
<ul>
|
||||
<li v-if="platformCapabilities.isIOS" class="list-disc list-outside ml-4">
|
||||
<li
|
||||
v-if="platformCapabilities.isIOS"
|
||||
class="list-disc list-outside ml-4"
|
||||
>
|
||||
On iOS: Choose "More..." and select a place in iCloud, or go "Back"
|
||||
and save to another location.
|
||||
</li>
|
||||
<li v-if="platformCapabilities.isMobile && !platformCapabilities.isIOS" class="list-disc list-outside ml-4">
|
||||
<li
|
||||
v-if="platformCapabilities.isMobile && !platformCapabilities.isIOS"
|
||||
class="list-disc list-outside ml-4"
|
||||
>
|
||||
On Android: Choose "Open" and then share
|
||||
<font-awesome icon="share-nodes" class="fa-fw" />
|
||||
to your prefered place.
|
||||
@@ -68,7 +67,10 @@ import { NotificationIface } from "../constants/app";
|
||||
import { db } from "../db/index";
|
||||
import { logger } from "../utils/logger";
|
||||
import { PlatformServiceFactory } from "../services/PlatformServiceFactory";
|
||||
import { PlatformService, PlatformCapabilities } from "../services/PlatformService";
|
||||
import {
|
||||
PlatformService,
|
||||
PlatformCapabilities,
|
||||
} from "../services/PlatformService";
|
||||
|
||||
/**
|
||||
* @vue-component
|
||||
@@ -100,7 +102,8 @@ export default class DataExportSection extends Vue {
|
||||
/**
|
||||
* Platform service instance for platform-specific operations
|
||||
*/
|
||||
private platformService: PlatformService = PlatformServiceFactory.getInstance();
|
||||
private platformService: PlatformService =
|
||||
PlatformServiceFactory.getInstance();
|
||||
|
||||
/**
|
||||
* Platform capabilities for the current platform
|
||||
@@ -123,7 +126,7 @@ export default class DataExportSection extends Vue {
|
||||
* Exports the database to a JSON file
|
||||
* Uses platform-specific methods for saving the exported data
|
||||
* Shows success/error notifications to user
|
||||
*
|
||||
*
|
||||
* @throws {Error} If export fails
|
||||
* @emits {Notification} Success or error notification
|
||||
*/
|
||||
|
||||
@@ -7,14 +7,14 @@ import { PyWebViewPlatformService } from "./platforms/PyWebViewPlatformService";
|
||||
/**
|
||||
* Factory class for creating platform-specific service implementations.
|
||||
* Implements the Singleton pattern to ensure only one instance of PlatformService exists.
|
||||
*
|
||||
*
|
||||
* The factory determines which platform implementation to use based on the VITE_PLATFORM
|
||||
* environment variable. Supported platforms are:
|
||||
* - capacitor: Mobile platform using Capacitor
|
||||
* - electron: Desktop platform using Electron
|
||||
* - pywebview: Python WebView implementation
|
||||
* - web: Default web platform (fallback)
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* const platformService = PlatformServiceFactory.getInstance();
|
||||
@@ -27,7 +27,7 @@ export class PlatformServiceFactory {
|
||||
/**
|
||||
* Gets or creates the singleton instance of PlatformService.
|
||||
* Creates the appropriate platform-specific implementation based on environment.
|
||||
*
|
||||
*
|
||||
* @returns {PlatformService} The singleton instance of PlatformService
|
||||
*/
|
||||
public static getInstance(): PlatformService {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* API error handling utilities for the application.
|
||||
* Provides centralized error handling for API requests with platform-specific logging.
|
||||
*
|
||||
*
|
||||
* @module api
|
||||
*/
|
||||
|
||||
@@ -10,12 +10,12 @@ import { logger } from "../utils/logger";
|
||||
|
||||
/**
|
||||
* Handles API errors with platform-specific logging and error processing.
|
||||
*
|
||||
*
|
||||
* @param error - The Axios error object from the failed request
|
||||
* @param endpoint - The API endpoint that was called
|
||||
* @returns null for rate limit errors (400), throws the error otherwise
|
||||
* @throws The original error for non-rate-limit cases
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* Special handling includes:
|
||||
* - Enhanced logging for Capacitor platform
|
||||
@@ -25,7 +25,7 @@ import { logger } from "../utils/logger";
|
||||
* - HTTP status
|
||||
* - Response data
|
||||
* - Request configuration (URL, method, headers)
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* try {
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
*
|
||||
* Deep Link Format:
|
||||
* timesafari://<route>[/<param>][?queryParam1=value1&queryParam2=value2]
|
||||
*
|
||||
*
|
||||
* Supported Routes:
|
||||
* - user-profile: View user profile
|
||||
* - project-details: View project details
|
||||
@@ -73,7 +73,7 @@ export class DeepLinkHandler {
|
||||
/**
|
||||
* Parses deep link URL into path, params and query components.
|
||||
* Validates URL structure using Zod schemas.
|
||||
*
|
||||
*
|
||||
* @param url - The deep link URL to parse (format: scheme://path[?query])
|
||||
* @throws {DeepLinkError} If URL format is invalid
|
||||
* @returns Parsed URL components (path, params, query)
|
||||
@@ -111,7 +111,7 @@ export class DeepLinkHandler {
|
||||
/**
|
||||
* Processes incoming deep links and routes them appropriately.
|
||||
* Handles validation, error handling, and routing to the correct view.
|
||||
*
|
||||
*
|
||||
* @param url - The deep link URL to process
|
||||
* @throws {DeepLinkError} If URL processing fails
|
||||
*/
|
||||
@@ -142,7 +142,7 @@ export class DeepLinkHandler {
|
||||
/**
|
||||
* Routes the deep link to appropriate view with validated parameters.
|
||||
* Validates route and parameters using Zod schemas before routing.
|
||||
*
|
||||
*
|
||||
* @param path - The route path from the deep link
|
||||
* @param params - URL parameters
|
||||
* @param query - Query string parameters
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Plan service module for handling plan and claim data loading.
|
||||
* Provides functionality to load plans with retry mechanism and error handling.
|
||||
*
|
||||
*
|
||||
* @module plan
|
||||
*/
|
||||
|
||||
@@ -26,11 +26,11 @@ interface PlanResponse {
|
||||
/**
|
||||
* Loads a plan with automatic retry mechanism.
|
||||
* Attempts to load the plan multiple times in case of failure.
|
||||
*
|
||||
*
|
||||
* @param handle - The unique identifier for the plan or claim
|
||||
* @param retries - Number of retry attempts (default: 3)
|
||||
* @returns Promise resolving to PlanResponse
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* - Implements exponential backoff with 1 second delay between retries
|
||||
* - Provides detailed logging of each attempt and any errors
|
||||
@@ -39,7 +39,7 @@ interface PlanResponse {
|
||||
* - HTTP status and headers
|
||||
* - Response data
|
||||
* - Request configuration
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* const response = await loadPlanWithRetry('plan-123');
|
||||
@@ -104,11 +104,11 @@ export const loadPlanWithRetry = async (
|
||||
/**
|
||||
* Makes a single API request to load a plan or claim.
|
||||
* Determines the appropriate endpoint based on the handle.
|
||||
*
|
||||
*
|
||||
* @param handle - The unique identifier for the plan or claim
|
||||
* @returns Promise resolving to PlanResponse
|
||||
* @throws Will throw an error if the API request fails
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* - Automatically detects claim vs plan endpoints based on handle
|
||||
* - Uses axios for HTTP requests
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
import { ImageResult, PlatformService, PlatformCapabilities } from "../PlatformService";
|
||||
import {
|
||||
ImageResult,
|
||||
PlatformService,
|
||||
PlatformCapabilities,
|
||||
} from "../PlatformService";
|
||||
import { Filesystem, Directory } from "@capacitor/filesystem";
|
||||
import { Camera, CameraResultType, CameraSource } from "@capacitor/camera";
|
||||
import { logger } from "../../utils/logger";
|
||||
@@ -22,7 +26,7 @@ export class CapacitorPlatformService implements PlatformService {
|
||||
isMobile: true,
|
||||
isIOS: /iPad|iPhone|iPod/.test(navigator.userAgent),
|
||||
hasFileDownload: false,
|
||||
needsFileHandlingInstructions: true
|
||||
needsFileHandlingInstructions: true,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -80,7 +84,9 @@ export class CapacitorPlatformService implements PlatformService {
|
||||
path: directory,
|
||||
directory: Directory.Data,
|
||||
});
|
||||
return result.files.map(file => typeof file === 'string' ? file : file.name);
|
||||
return result.files.map((file) =>
|
||||
typeof file === "string" ? file : file.name,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
import { ImageResult, PlatformService, PlatformCapabilities } from "../PlatformService";
|
||||
import {
|
||||
ImageResult,
|
||||
PlatformService,
|
||||
PlatformCapabilities,
|
||||
} from "../PlatformService";
|
||||
import { logger } from "../../utils/logger";
|
||||
|
||||
/**
|
||||
* Platform service implementation for Electron (desktop) platform.
|
||||
* Note: This is a placeholder implementation with most methods currently unimplemented.
|
||||
* Implements the PlatformService interface but throws "Not implemented" errors for most operations.
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* This service is intended for desktop application functionality through Electron.
|
||||
* Future implementations should provide:
|
||||
@@ -25,7 +29,7 @@ export class ElectronPlatformService implements PlatformService {
|
||||
isMobile: false,
|
||||
isIOS: false,
|
||||
hasFileDownload: false, // Not implemented yet
|
||||
needsFileHandlingInstructions: false
|
||||
needsFileHandlingInstructions: false,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
import { ImageResult, PlatformService, PlatformCapabilities } from "../PlatformService";
|
||||
import {
|
||||
ImageResult,
|
||||
PlatformService,
|
||||
PlatformCapabilities,
|
||||
} from "../PlatformService";
|
||||
import { logger } from "../../utils/logger";
|
||||
|
||||
/**
|
||||
* Platform service implementation for PyWebView platform.
|
||||
* Note: This is a placeholder implementation with most methods currently unimplemented.
|
||||
* Implements the PlatformService interface but throws "Not implemented" errors for most operations.
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* This service is intended for Python-based desktop applications using pywebview.
|
||||
* Future implementations should provide:
|
||||
@@ -26,7 +30,7 @@ export class PyWebViewPlatformService implements PlatformService {
|
||||
isMobile: false,
|
||||
isIOS: false,
|
||||
hasFileDownload: false, // Not implemented yet
|
||||
needsFileHandlingInstructions: false
|
||||
needsFileHandlingInstructions: false,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
import { ImageResult, PlatformService, PlatformCapabilities } from "../PlatformService";
|
||||
import {
|
||||
ImageResult,
|
||||
PlatformService,
|
||||
PlatformCapabilities,
|
||||
} from "../PlatformService";
|
||||
import { logger } from "../../utils/logger";
|
||||
|
||||
/**
|
||||
* Platform service implementation for web browser platform.
|
||||
* Implements the PlatformService interface with web-specific functionality.
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* This service provides web-based implementations for:
|
||||
* - Image capture using the browser's file input
|
||||
* - Image selection from local filesystem
|
||||
* - Image processing and conversion
|
||||
*
|
||||
*
|
||||
* Note: File system operations are not available in the web platform
|
||||
* due to browser security restrictions. These methods throw appropriate errors.
|
||||
*/
|
||||
@@ -26,7 +30,7 @@ export class WebPlatformService implements PlatformService {
|
||||
isMobile: /iPhone|iPad|iPod|Android/i.test(navigator.userAgent),
|
||||
isIOS: /iPad|iPhone|iPod/.test(navigator.userAgent),
|
||||
hasFileDownload: true,
|
||||
needsFileHandlingInstructions: false
|
||||
needsFileHandlingInstructions: false,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -70,10 +74,10 @@ export class WebPlatformService implements PlatformService {
|
||||
/**
|
||||
* Opens a file input dialog configured for camera capture.
|
||||
* Creates a temporary file input element to access the device camera.
|
||||
*
|
||||
*
|
||||
* @returns Promise resolving to the captured image data
|
||||
* @throws Error if image capture fails or no image is selected
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* Uses the 'capture' attribute to prefer the device camera.
|
||||
* Falls back to file selection if camera is not available.
|
||||
@@ -111,10 +115,10 @@ export class WebPlatformService implements PlatformService {
|
||||
/**
|
||||
* Opens a file input dialog for selecting an image file.
|
||||
* Creates a temporary file input element to access local files.
|
||||
*
|
||||
*
|
||||
* @returns Promise resolving to the selected image data
|
||||
* @throws Error if image processing fails or no image is selected
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* Allows selection of any image file type.
|
||||
* Processes the selected image to ensure consistent format.
|
||||
@@ -150,11 +154,11 @@ export class WebPlatformService implements PlatformService {
|
||||
/**
|
||||
* Processes an image file to ensure consistent format.
|
||||
* Converts the file to a data URL and then to a Blob.
|
||||
*
|
||||
*
|
||||
* @param file - The image File object to process
|
||||
* @returns Promise resolving to processed image Blob
|
||||
* @throws Error if file reading or conversion fails
|
||||
*
|
||||
*
|
||||
* @remarks
|
||||
* This method ensures consistent image format across different
|
||||
* input sources by converting through data URL to Blob.
|
||||
@@ -216,7 +220,7 @@ export class WebPlatformService implements PlatformService {
|
||||
/**
|
||||
* Handles deep link URLs in the web platform.
|
||||
* Deep links are handled through URL parameters in the web environment.
|
||||
*
|
||||
*
|
||||
* @param _url - The deep link URL to handle (unused in web implementation)
|
||||
* @returns Promise that resolves immediately as web handles URLs naturally
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user