(service: ServiceType)
| 573 | } |
| 574 | |
| 575 | function getServiceConfigError(service: ServiceType): string | null { |
| 576 | const store = settings.store as { |
| 577 | serviceUrl?: string; |
| 578 | ziplineToken?: string; |
| 579 | nestToken?: string; |
| 580 | ezHostKey?: string; |
| 581 | encryptingHostKey?: string; |
| 582 | pixelVaultKey?: string; |
| 583 | webdavUrl?: string; |
| 584 | }; |
| 585 | |
| 586 | switch (service) { |
| 587 | case ServiceType.ZIPLINE: |
| 588 | return store.serviceUrl && store.ziplineToken ? null : "Zipline service URL and token required"; |
| 589 | case ServiceType.NEST: |
| 590 | return store.nestToken ? null : "Nest API token required"; |
| 591 | case ServiceType.EZHOST: |
| 592 | return store.ezHostKey ? null : "E-Z Host API key required"; |
| 593 | case ServiceType.ENCRYPTINGHOST: |
| 594 | return store.encryptingHostKey ? null : "Encrypting.host API key required"; |
| 595 | case ServiceType.S3: |
| 596 | return isS3Configured() ? null : "S3 endpoint, bucket, and access keys required"; |
| 597 | case ServiceType.ZEROX0: |
| 598 | return Native ? null : "0x0.st requires the desktop app"; |
| 599 | case ServiceType.PIXELVAULT: |
| 600 | return store.pixelVaultKey ? null : "PixelVault upload key required"; |
| 601 | case ServiceType.WEBDAV: |
| 602 | return store.webdavUrl ? null : "WebDAV server URL required"; |
| 603 | case ServiceType.SHAREX: |
| 604 | try { |
| 605 | parseShareXConfigFromSettings(); |
| 606 | return null; |
| 607 | } catch (error) { |
| 608 | return error instanceof Error ? error.message : "Invalid ShareX config"; |
| 609 | } |
| 610 | default: |
| 611 | return null; |
| 612 | } |
| 613 | } |
| 614 | |
| 615 | export function isConfigured(): boolean { |
| 616 | const selected = (settings.store as { serviceType: ServiceType; }).serviceType; |
no test coverage detected