mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-11 16:57:39 +00:00
refactor(commons): extract GitDiffView renderer to commons
Third batch of the note-ui-commons extraction. GitDiffView is a pure presentation composable — it takes a quartz ParsedPatch + a Modifier, with no AccountViewModel/INav/Note — and its syntax-highlighting helper (CodeHighlighter) already lives in commons, so it moves wholesale. - commons/ui/note/GitDiffView.kt: the GitHub-style file-by-file diff view (stat summary, per-file collapsible cards, +/- line coloring, intraline emphasis, syntax highlighting). Labels resolve via commons Res. - Migrated git_diff_binary (string) and git_diff_files_changed (plural, all quantity forms across 11 locales) from amethyst/res into commons/composeResources; deleted the amethyst copies. This exercises the now-wired commons Crowdin pipeline for a plural resource. - Callers (Git.kt, GitPullRequestChanges.kt, GitCommitLog.kt) re-point the import to commons; the call sites are unchanged. Verified: :commons:compileKotlinJvm (plural accessor generation) and :amethyst:compileFdroidDebugKotlin both pass; every touched strings.xml is well-formed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gmrt3jwYPDJ38MJGJ6GaNr
This commit is contained in:
@@ -60,6 +60,7 @@ import com.vitorpamplona.amethyst.commons.model.toImmutableListOfLists
|
||||
import com.vitorpamplona.amethyst.commons.nip34Git.GitBrowseState
|
||||
import com.vitorpamplona.amethyst.commons.nip34Git.GitRepoSnapshotCache
|
||||
import com.vitorpamplona.amethyst.commons.nip34Git.GitRepositoryBrowserViewModel
|
||||
import com.vitorpamplona.amethyst.commons.ui.note.GitDiffView
|
||||
import com.vitorpamplona.amethyst.commons.ui.note.StatusKind
|
||||
import com.vitorpamplona.amethyst.model.AddressableNote
|
||||
import com.vitorpamplona.amethyst.model.GitPullRequestUpdateIndex
|
||||
|
||||
+1
@@ -42,6 +42,7 @@ import androidx.compose.ui.unit.dp
|
||||
import com.vitorpamplona.amethyst.R
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.Icon
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols
|
||||
import com.vitorpamplona.amethyst.commons.ui.note.GitDiffView
|
||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||
import com.vitorpamplona.amethyst.ui.stringRes
|
||||
import com.vitorpamplona.quartz.nip34Git.git.GitHttpClient
|
||||
|
||||
+1
-1
@@ -58,8 +58,8 @@ import com.vitorpamplona.amethyst.R
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.Icon
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols
|
||||
import com.vitorpamplona.amethyst.commons.nip34Git.GitRepositoryBrowserViewModel
|
||||
import com.vitorpamplona.amethyst.commons.ui.note.GitDiffView
|
||||
import com.vitorpamplona.amethyst.ui.note.ArrowBackIcon
|
||||
import com.vitorpamplona.amethyst.ui.note.types.GitDiffView
|
||||
import com.vitorpamplona.amethyst.ui.stringRes
|
||||
import com.vitorpamplona.quartz.nip34Git.git.GitCommit
|
||||
import com.vitorpamplona.quartz.nip34Git.git.GitRepoSnapshot
|
||||
|
||||
@@ -3075,13 +3075,6 @@
|
||||
<item quantity="many">%1$d položky</item>
|
||||
<item quantity="other">%1$d položek</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d soubor změněn</item>
|
||||
<item quantity="few">%1$d soubory změněny</item>
|
||||
<item quantity="many">%1$d souboru změněno</item>
|
||||
<item quantity="other">%1$d souborů změněno</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Binární soubor se nezobrazuje.</string>
|
||||
<string name="git_new_issue_button">Nový</string>
|
||||
<string name="git_new_issue_title">Nový problém</string>
|
||||
<string name="git_new_issue_subject">Název</string>
|
||||
|
||||
@@ -2991,11 +2991,6 @@
|
||||
<item quantity="one">%1$d Element</item>
|
||||
<item quantity="other">%1$d Elemente</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">Datei geändert</item>
|
||||
<item quantity="other">Dateien geändert</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Binärdatei wird nicht angezeigt.</string>
|
||||
<string name="git_new_issue_button">Neu</string>
|
||||
<string name="git_new_issue_title">Neues Issue</string>
|
||||
<string name="git_new_issue_subject">Titel</string>
|
||||
|
||||
@@ -2905,11 +2905,6 @@
|
||||
<item quantity="one">%1$d वस्तु</item>
|
||||
<item quantity="other">%1$d वस्तुएँ</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d अभिलेख परिवर्तित</item>
|
||||
<item quantity="other">%1$d अभिलेख परिवर्तित</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">अंकीय अभिलेख नहीं दर्शाया गया।</string>
|
||||
<string name="git_new_issue_button">नव्य</string>
|
||||
<string name="git_new_issue_title">नया विषय</string>
|
||||
<string name="git_new_issue_subject">शीर्षक</string>
|
||||
|
||||
@@ -2877,11 +2877,6 @@
|
||||
<item quantity="one">%1$d elem</item>
|
||||
<item quantity="other">%1$d elem</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d fájl módosult</item>
|
||||
<item quantity="other">%1$d fájl módosult</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Nem jeleníthető meg a bináris fájl tartalma.</string>
|
||||
<string name="git_new_issue_button">Új</string>
|
||||
<string name="git_new_issue_title">Új hibajegy</string>
|
||||
<string name="git_new_issue_subject">Cím</string>
|
||||
|
||||
@@ -2532,11 +2532,6 @@
|
||||
<item quantity="one">%1$d item</item>
|
||||
<item quantity="other">%1$d items</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d bestand gewijzigd</item>
|
||||
<item quantity="other">%1$d bestanden gewijzigd</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Binair bestand niet getoond.</string>
|
||||
<string name="git_new_issue_button">Nieuw</string>
|
||||
<string name="git_new_issue_title">Nieuw issue</string>
|
||||
<string name="git_new_issue_subject">Titel</string>
|
||||
|
||||
@@ -3076,13 +3076,6 @@ Zaplanowane posty z innych kont nie zostaną opublikowane, dopóki to konto jest
|
||||
<item quantity="many">%1$d elementów</item>
|
||||
<item quantity="other">%1$d elementy</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">Plik %1$d zmieniony</item>
|
||||
<item quantity="few">Plików %1$d zmienionych</item>
|
||||
<item quantity="many">Plików %1$d zmienionych</item>
|
||||
<item quantity="other">%1$d pliki zostały zmienione</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Plik binarny nie jest wyświetlany.</string>
|
||||
<string name="git_new_issue_button">Nowy</string>
|
||||
<string name="git_new_issue_title">Nowy problem</string>
|
||||
<string name="git_new_issue_subject">Tytuł</string>
|
||||
|
||||
@@ -2989,11 +2989,6 @@
|
||||
<item quantity="one">%1$d iten</item>
|
||||
<item quantity="other">%1$d itens</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d arquivo alterado</item>
|
||||
<item quantity="other">%1$d arquivos alterados</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Arquivo binário não exibido.</string>
|
||||
<string name="git_new_issue_button">Nova</string>
|
||||
<string name="git_new_issue_title">Nova issue</string>
|
||||
<string name="git_new_issue_subject">Título</string>
|
||||
|
||||
@@ -2777,13 +2777,6 @@ Za ohranitev zasebnosti to denarnico polni in prazni prek ne-zasebnih računov,
|
||||
<item quantity="few">%1$d elementi</item>
|
||||
<item quantity="other">%1$d elementov</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d datoteka spremenjena</item>
|
||||
<item quantity="two">%1$d datoteki spremenjeni</item>
|
||||
<item quantity="few">%1$d datoteke spremenjene</item>
|
||||
<item quantity="other">%1$d datotek spremenjenih</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Binarna datoteka ni prikazana.</string>
|
||||
<string name="git_new_issue_button">Nov</string>
|
||||
<string name="git_new_issue_title">Prijavi težavo</string>
|
||||
<string name="git_new_issue_subject">Naslov</string>
|
||||
|
||||
@@ -2989,11 +2989,6 @@
|
||||
<item quantity="one">%1$d objekt</item>
|
||||
<item quantity="other">%1$d objekt</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d fil ändrad</item>
|
||||
<item quantity="other">%1$d filer ändrade</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Binär fil visas inte.</string>
|
||||
<string name="git_new_issue_button">Ny</string>
|
||||
<string name="git_new_issue_title">Nytt ärende</string>
|
||||
<string name="git_new_issue_subject">Titel</string>
|
||||
|
||||
@@ -2867,10 +2867,6 @@
|
||||
<plurals name="git_repo_item_count">
|
||||
<item quantity="other">%1$d 个项目</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="other">%1$d 个文件已更改</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">二进制文件未显示。</string>
|
||||
<string name="git_new_issue_button">新建</string>
|
||||
<string name="git_new_issue_title">新工单</string>
|
||||
<string name="git_new_issue_subject">标题</string>
|
||||
|
||||
@@ -3311,11 +3311,6 @@
|
||||
<item quantity="one">%1$d item</item>
|
||||
<item quantity="other">%1$d items</item>
|
||||
</plurals>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d file changed</item>
|
||||
<item quantity="other">%1$d files changed</item>
|
||||
</plurals>
|
||||
<string name="git_diff_binary">Binary file not shown.</string>
|
||||
<string name="git_new_issue_button">New</string>
|
||||
<string name="git_new_issue_title">New issue</string>
|
||||
<string name="git_new_issue_subject">Title</string>
|
||||
|
||||
@@ -4,4 +4,11 @@
|
||||
<string name="git_status_merged">Sloučeno</string>
|
||||
<string name="git_status_closed">Uzavřeno</string>
|
||||
<string name="git_status_draft">Koncept</string>
|
||||
<string name="git_diff_binary">Binární soubor se nezobrazuje.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d soubor změněn</item>
|
||||
<item quantity="few">%1$d soubory změněny</item>
|
||||
<item quantity="many">%1$d souboru změněno</item>
|
||||
<item quantity="other">%1$d souborů změněno</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,9 @@
|
||||
<string name="git_status_merged">Zusammengeführt</string>
|
||||
<string name="git_status_closed">Geschlossen</string>
|
||||
<string name="git_status_draft">Entwurf</string>
|
||||
<string name="git_diff_binary">Binärdatei wird nicht angezeigt.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">Datei geändert</item>
|
||||
<item quantity="other">Dateien geändert</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,9 @@
|
||||
<string name="git_status_merged">विलीन</string>
|
||||
<string name="git_status_closed">आवृत</string>
|
||||
<string name="git_status_draft">पाण्डुलिपि</string>
|
||||
<string name="git_diff_binary">अंकीय अभिलेख नहीं दर्शाया गया।</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d अभिलेख परिवर्तित</item>
|
||||
<item quantity="other">%1$d अभिलेख परिवर्तित</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,9 @@
|
||||
<string name="git_status_merged">Beolvasztva</string>
|
||||
<string name="git_status_closed">Lezárva</string>
|
||||
<string name="git_status_draft">Vázlat</string>
|
||||
<string name="git_diff_binary">Nem jeleníthető meg a bináris fájl tartalma.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d fájl módosult</item>
|
||||
<item quantity="other">%1$d fájl módosult</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,9 @@
|
||||
<string name="git_status_merged">Samengevoegd</string>
|
||||
<string name="git_status_closed">Gesloten</string>
|
||||
<string name="git_status_draft">Concept</string>
|
||||
<string name="git_diff_binary">Binair bestand niet getoond.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d bestand gewijzigd</item>
|
||||
<item quantity="other">%1$d bestanden gewijzigd</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,11 @@
|
||||
<string name="git_status_merged">Połączone</string>
|
||||
<string name="git_status_closed">Zamknięte</string>
|
||||
<string name="git_status_draft">Szkic</string>
|
||||
<string name="git_diff_binary">Plik binarny nie jest wyświetlany.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">Plik %1$d zmieniony</item>
|
||||
<item quantity="few">Plików %1$d zmienionych</item>
|
||||
<item quantity="many">Plików %1$d zmienionych</item>
|
||||
<item quantity="other">%1$d pliki zostały zmienione</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,9 @@
|
||||
<string name="git_status_merged">Mesclado</string>
|
||||
<string name="git_status_closed">Fechado</string>
|
||||
<string name="git_status_draft">Rascunho</string>
|
||||
<string name="git_diff_binary">Arquivo binário não exibido.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d arquivo alterado</item>
|
||||
<item quantity="other">%1$d arquivos alterados</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,11 @@
|
||||
<string name="git_status_merged">Združeno</string>
|
||||
<string name="git_status_closed">Zaključeno</string>
|
||||
<string name="git_status_draft">Osnutek</string>
|
||||
<string name="git_diff_binary">Binarna datoteka ni prikazana.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d datoteka spremenjena</item>
|
||||
<item quantity="two">%1$d datoteki spremenjeni</item>
|
||||
<item quantity="few">%1$d datoteke spremenjene</item>
|
||||
<item quantity="other">%1$d datotek spremenjenih</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,9 @@
|
||||
<string name="git_status_merged">Sammanfogad</string>
|
||||
<string name="git_status_closed">Stängd</string>
|
||||
<string name="git_status_draft">Utkast</string>
|
||||
<string name="git_diff_binary">Binär fil visas inte.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d fil ändrad</item>
|
||||
<item quantity="other">%1$d filer ändrade</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -4,4 +4,8 @@
|
||||
<string name="git_status_merged">已合并</string>
|
||||
<string name="git_status_closed">已关闭</string>
|
||||
<string name="git_status_draft">草稿</string>
|
||||
<string name="git_diff_binary">二进制文件未显示。</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="other">%1$d 个文件已更改</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -105,4 +105,9 @@
|
||||
<string name="git_status_merged">Merged</string>
|
||||
<string name="git_status_closed">Closed</string>
|
||||
<string name="git_status_draft">Draft</string>
|
||||
<string name="git_diff_binary">Binary file not shown.</string>
|
||||
<plurals name="git_diff_files_changed">
|
||||
<item quantity="one">%1$d file changed</item>
|
||||
<item quantity="other">%1$d files changed</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
+8
-6
@@ -18,7 +18,7 @@
|
||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
package com.vitorpamplona.amethyst.ui.note.types
|
||||
package com.vitorpamplona.amethyst.commons.ui.note
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
@@ -45,7 +45,6 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.pluralStringResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.SpanStyle
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
@@ -56,12 +55,13 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.vitorpamplona.amethyst.R
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.Icon
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol
|
||||
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols
|
||||
import com.vitorpamplona.amethyst.commons.nip34Git.ui.CodeHighlighter
|
||||
import com.vitorpamplona.amethyst.ui.stringRes
|
||||
import com.vitorpamplona.amethyst.commons.resources.Res
|
||||
import com.vitorpamplona.amethyst.commons.resources.git_diff_binary
|
||||
import com.vitorpamplona.amethyst.commons.resources.git_diff_files_changed
|
||||
import com.vitorpamplona.quartz.nip34Git.patch.CharSpan
|
||||
import com.vitorpamplona.quartz.nip34Git.patch.GitDiffFile
|
||||
import com.vitorpamplona.quartz.nip34Git.patch.GitDiffLine
|
||||
@@ -70,6 +70,8 @@ import com.vitorpamplona.quartz.nip34Git.patch.GitFileChange
|
||||
import com.vitorpamplona.quartz.nip34Git.patch.IntralineDiff
|
||||
import com.vitorpamplona.quartz.nip34Git.patch.ParsedPatch
|
||||
import dev.snipme.highlights.model.SyntaxLanguage
|
||||
import org.jetbrains.compose.resources.pluralStringResource
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
private val AddColor = Color(0xFF1F883D)
|
||||
private val DeleteColor = Color(0xFFCF222E)
|
||||
@@ -110,7 +112,7 @@ private fun DiffStatSummary(parsed: ParsedPatch) {
|
||||
) {
|
||||
val fileCount = parsed.files.size
|
||||
Text(
|
||||
text = pluralStringResource(R.plurals.git_diff_files_changed, fileCount, fileCount),
|
||||
text = pluralStringResource(Res.plurals.git_diff_files_changed, fileCount, fileCount),
|
||||
style = MaterialTheme.typography.labelMedium,
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
@@ -171,7 +173,7 @@ private fun DiffFileCard(
|
||||
if (expanded) {
|
||||
if (file.isBinary) {
|
||||
Text(
|
||||
text = stringRes(R.string.git_diff_binary),
|
||||
text = stringResource(Res.string.git_diff_binary),
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.padding(12.dp),
|
||||
Reference in New Issue
Block a user