Overview
Add World Radio League (WRL) contact logging integration similar to the existing Cloudlog and QRZ implementations.
Implementation Pattern
Follow the existing Cloudlog/Wavelog/Nextlog pattern:
- Settings UI with server configuration
- API key authentication
- Test connection button
- Auto-upload QSOs after successful contacts
- Station profile management (if applicable)
Required Information from WRL Documentation
Before implementation, confirm from WRL API documentation:
Configuration Fields Needed
Settings Storage (GeneralVariables.java)
wrlServerAddress — Server URL (required if self-hosted; optional if cloud)
wrlApiKey — API key for authentication (required)
wrlStationID — Station profile ID (optional; fetch via API if multi-station support exists)
enableWRL — Enable/disable WRL sync toggle
Settings UI (LoggingSettings.kt)
Follow the CloudlogSettingsDialog pattern:
- Server address input (if applicable)
- API key input field
- Station ID selector (dropdown populated from API query, if applicable)
- Test Connection button
- Enable toggle in main logging settings
Implementation Tasks
1. Core Authentication & Connection
2. Settings UI
3. QSO Upload
4. Sync Management
5. Testing
Code References
Existing implementations to reference:
ft8af/app/src/main/kotlin/radio/ks3ckc/ft8af/ui/settings/LoggingSettings.kt — Settings UI pattern (CloudlogSettingsDialog)
ft8af/app/src/main/java/com/k1af/ft8af/log/ThirdPartyService.java — Service upload & connection logic
ft8af/app/src/main/kotlin/radio/ks3ckc/ft8af/sync/QsoAutoSync.kt — Auto-sync on connectivity restore
ft8af/app/src/main/kotlin/radio/ks3ckc/ft8af/ui/logbook/LogbookScreen.kt — Sync status display (SyncChips)
Notes
- Keep WRL auth minimal: API key in settings (no username/password needed if key-based)
- Match the deduplication strategy of Cloudlog/QRZ (services handle repeat uploads safely)
- Use same ADIF mode mappings (FT2/FT4 → MFSK submode; FT8 → standalone mode)
- Follow existing threading patterns: uploads happen on background thread post-QSO
Overview
Add World Radio League (WRL) contact logging integration similar to the existing Cloudlog and QRZ implementations.
Implementation Pattern
Follow the existing Cloudlog/Wavelog/Nextlog pattern:
Required Information from WRL Documentation
Before implementation, confirm from WRL API documentation:
Authorization: Bearer {key},X-API-Key: {key}, or path segment?)Configuration Fields Needed
Settings Storage (GeneralVariables.java)
wrlServerAddress— Server URL (required if self-hosted; optional if cloud)wrlApiKey— API key for authentication (required)wrlStationID— Station profile ID (optional; fetch via API if multi-station support exists)enableWRL— Enable/disable WRL sync toggleSettings UI (LoggingSettings.kt)
Follow the
CloudlogSettingsDialogpattern:Implementation Tasks
1. Core Authentication & Connection
GeneralVariables.javaThirdPartyService.CheckWrlConnection()— test server connectivity with API keyThirdPartyService.FetchWrlStations()— retrieve station profiles (if applicable)2. Settings UI
WrlSettingsDialog()inLoggingSettings.ktCheckWrlConnection()mainViewModel.databaseOpr.writeConfig()3. QSO Upload
ThirdPartyService.UploadToWrl(QSLRecord)ThirdPartyService.QSLRecordToADIF())synced_wrlcolumn in QSLTable if not present)MainViewModel.javaonTransmitSuccess callback)4. Sync Management
synced_wrlboolean column to QSLTable schema (if not present)ThirdPartyService.syncAllQSOs()to include WRLQsoAutoSyncto include WRL in retry/reconnect logic5. Testing
Code References
Existing implementations to reference:
ft8af/app/src/main/kotlin/radio/ks3ckc/ft8af/ui/settings/LoggingSettings.kt— Settings UI pattern (CloudlogSettingsDialog)ft8af/app/src/main/java/com/k1af/ft8af/log/ThirdPartyService.java— Service upload & connection logicft8af/app/src/main/kotlin/radio/ks3ckc/ft8af/sync/QsoAutoSync.kt— Auto-sync on connectivity restoreft8af/app/src/main/kotlin/radio/ks3ckc/ft8af/ui/logbook/LogbookScreen.kt— Sync status display (SyncChips)Notes