fix(v1.8.0): IMPL_06 Resolve ClickableText deprecation warning
- Replace deprecated ClickableText with modern Text + LinkAnnotation API - Update imports: remove ClickableText, add LinkAnnotation & withLink - Use TextLinkStyles for styled clickable links in changelog - Maintain URL click functionality without deprecated API - Update CHANGELOG.md with missing IMPL_04 & IMPL_06 feature details - Update CHANGELOG.de.md with matching German translations - Add Backup Settings Progress improvements to changelog - Add Post-Update Changelog Dialog documentation - Verify all 23 v1.8.0 features documented in changelog Resolves deprecation warning in Kotlin/Compose build. ClickableText is deprecated in favor of Text with LinkAnnotation for link handling. Migration maintains full functionality while using modern Compose APIs. Changelogs updated to include all major features from feature branch: IMPL_04 Backup Progress UI improvements and IMPL_06 Post-Update Changelog, marking v1.8.0 feature-complete with comprehensive documentation. Build: BUILD SUCCESSFUL - 0 Lint errors + 0 Deprecation warnings
This commit is contained in:
@@ -93,6 +93,23 @@ Komplettes Widget-System mit interaktiven Checklisten, Notiz-Sortierung und umfa
|
|||||||
- Sync-Einstellungen umstrukturiert in klare Sektionen: Auslöser & Performance ([eaac5a0](https://github.com/inventory69/simple-notes-sync/commit/eaac5a0))
|
- Sync-Einstellungen umstrukturiert in klare Sektionen: Auslöser & Performance ([eaac5a0](https://github.com/inventory69/simple-notes-sync/commit/eaac5a0))
|
||||||
- Changelog-Link zum About-Screen hinzugefügt ([49810ff](https://github.com/inventory69/simple-notes-sync/commit/49810ff))
|
- Changelog-Link zum About-Screen hinzugefügt ([49810ff](https://github.com/inventory69/simple-notes-sync/commit/49810ff))
|
||||||
|
|
||||||
|
**Post-Update Changelog-Dialog** ([661d9e0](https://github.com/inventory69/simple-notes-sync/commit/661d9e0))
|
||||||
|
- Zeigt lokalisierten Changelog beim ersten Start nach Update
|
||||||
|
- Material 3 ModalBottomSheet mit Slide-up-Animation
|
||||||
|
- Lädt F-Droid Changelogs via Assets (Single Source of Truth)
|
||||||
|
- Einmalige Anzeige pro versionCode (gespeichert in SharedPreferences)
|
||||||
|
- Klickbarer GitHub-Link für vollständigen Changelog
|
||||||
|
- Durch Button oder Swipe-Geste schließbar
|
||||||
|
- Test-Modus in Debug-Einstellungen mit Reset-Option
|
||||||
|
|
||||||
|
**Backup-Einstellungs-Verbesserungen** ([3e946ed](https://github.com/inventory69/simple-notes-sync/commit/3e946ed))
|
||||||
|
- Neue BackupProgressCard mit LinearProgressIndicator
|
||||||
|
- 3-Phasen-Status-System: In Progress → Abschluss → Löschen
|
||||||
|
- Erfolgs-Status für 2s angezeigt, Fehler für 3s
|
||||||
|
- Redundante Toast-Nachrichten entfernt
|
||||||
|
- Buttons bleiben sichtbar und deaktiviert während Operationen
|
||||||
|
- Exception-Logging für besseres Error-Tracking
|
||||||
|
|
||||||
### 🐛 Fehlerbehebungen
|
### 🐛 Fehlerbehebungen
|
||||||
|
|
||||||
**Widget-Text-Anzeige** ([d045d4d](https://github.com/inventory69/simple-notes-sync/commit/d045d4d))
|
**Widget-Text-Anzeige** ([d045d4d](https://github.com/inventory69/simple-notes-sync/commit/d045d4d))
|
||||||
|
|||||||
17
CHANGELOG.md
17
CHANGELOG.md
@@ -93,6 +93,23 @@ Complete widget system with interactive checklists, note sorting, and major sync
|
|||||||
- Sync settings restructured into clear sections: Triggers & Performance ([eaac5a0](https://github.com/inventory69/simple-notes-sync/commit/eaac5a0))
|
- Sync settings restructured into clear sections: Triggers & Performance ([eaac5a0](https://github.com/inventory69/simple-notes-sync/commit/eaac5a0))
|
||||||
- Changelog link added to About screen ([49810ff](https://github.com/inventory69/simple-notes-sync/commit/49810ff))
|
- Changelog link added to About screen ([49810ff](https://github.com/inventory69/simple-notes-sync/commit/49810ff))
|
||||||
|
|
||||||
|
**Post-Update Changelog Dialog** ([661d9e0](https://github.com/inventory69/simple-notes-sync/commit/661d9e0))
|
||||||
|
- Shows localized changelog on first launch after update
|
||||||
|
- Material 3 ModalBottomSheet with slide-up animation
|
||||||
|
- Loads F-Droid changelogs via assets (single source of truth)
|
||||||
|
- One-time display per versionCode (stored in SharedPreferences)
|
||||||
|
- Clickable GitHub link for full changelog
|
||||||
|
- Dismissable via button or swipe gesture
|
||||||
|
- Test mode in Debug Settings with reset option
|
||||||
|
|
||||||
|
**Backup Settings Improvements** ([3e946ed](https://github.com/inventory69/simple-notes-sync/commit/3e946ed))
|
||||||
|
- New BackupProgressCard with LinearProgressIndicator
|
||||||
|
- 3-phase status system: In Progress → Completion → Clear
|
||||||
|
- Success status shown for 2s, errors for 3s
|
||||||
|
- Removed redundant toast messages
|
||||||
|
- Buttons stay visible and disabled during operations
|
||||||
|
- Exception logging for better error tracking
|
||||||
|
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
**Widget Text Display** ([d045d4d](https://github.com/inventory69/simple-notes-sync/commit/d045d4d))
|
**Widget Text Display** ([d045d4d](https://github.com/inventory69/simple-notes-sync/commit/d045d4d))
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.text.ClickableText
|
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@@ -27,10 +26,12 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.text.LinkAnnotation
|
||||||
import androidx.compose.ui.text.SpanStyle
|
import androidx.compose.ui.text.SpanStyle
|
||||||
import androidx.compose.ui.text.buildAnnotatedString
|
import androidx.compose.ui.text.buildAnnotatedString
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextDecoration
|
import androidx.compose.ui.text.style.TextDecoration
|
||||||
|
import androidx.compose.ui.text.withLink
|
||||||
import androidx.compose.ui.text.withStyle
|
import androidx.compose.ui.text.withStyle
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.dettmer.simplenotes.BuildConfig
|
import dev.dettmer.simplenotes.BuildConfig
|
||||||
@@ -107,19 +108,19 @@ fun UpdateChangelogSheet() {
|
|||||||
lines.forEachIndexed { index, line ->
|
lines.forEachIndexed { index, line ->
|
||||||
if (line.startsWith("http://") || line.startsWith("https://")) {
|
if (line.startsWith("http://") || line.startsWith("https://")) {
|
||||||
// Make URLs clickable
|
// Make URLs clickable
|
||||||
pushStringAnnotation(
|
withLink(
|
||||||
tag = "URL",
|
LinkAnnotation.Url(
|
||||||
annotation = line.trim()
|
url = line.trim(),
|
||||||
)
|
styles = androidx.compose.ui.text.TextLinkStyles(
|
||||||
withStyle(
|
style = SpanStyle(
|
||||||
style = SpanStyle(
|
color = MaterialTheme.colorScheme.primary,
|
||||||
color = MaterialTheme.colorScheme.primary,
|
textDecoration = TextDecoration.Underline
|
||||||
textDecoration = TextDecoration.Underline
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
append(line)
|
append(line)
|
||||||
}
|
}
|
||||||
pop()
|
|
||||||
} else {
|
} else {
|
||||||
append(line)
|
append(line)
|
||||||
}
|
}
|
||||||
@@ -127,19 +128,12 @@ fun UpdateChangelogSheet() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClickableText(
|
Text(
|
||||||
text = annotatedText,
|
text = annotatedText,
|
||||||
style = MaterialTheme.typography.bodyMedium.copy(
|
style = MaterialTheme.typography.bodyMedium.copy(
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
),
|
),
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth()
|
||||||
onClick = { offset ->
|
|
||||||
annotatedText.getStringAnnotations(tag = "URL", start = offset, end = offset)
|
|
||||||
.firstOrNull()?.let { annotation ->
|
|
||||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(annotation.item))
|
|
||||||
context.startActivity(intent)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(24.dp))
|
Spacer(modifier = Modifier.height(24.dp))
|
||||||
|
|||||||
Reference in New Issue
Block a user