diff --git a/.github/workflows/validate-gradle-wrapper.yml b/.github/workflows/validate-gradle-wrapper.yml new file mode 100644 index 000000000..b5f0b31ac --- /dev/null +++ b/.github/workflows/validate-gradle-wrapper.yml @@ -0,0 +1,11 @@ +name: Validate Gradle Wrapper + +on: [pull_request, push] + +jobs: + validation: + name: Validation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: gradle/wrapper-validation-action@v1 diff --git a/build.gradle b/build.gradle index d426d29b9..8357ab502 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.android.tools.build:gradle:8.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/gradle.properties b/gradle.properties index 3c6cdff76..415e17f9f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,4 +16,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX -android.enableJetifier=false \ No newline at end of file +android.enableJetifier=false +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c02..c1962a79e 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 112a498f8..2c3425d49 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Thu Jan 13 11:33:43 MSK 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionSha256Sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0c8..aeb74cbb4 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,98 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +118,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +129,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +137,109 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index ac1b06f93..6689b85be 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 323e38ae7..2562630ec 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -2,6 +2,12 @@ plugins { id 'com.android.application' } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + android { compileSdk 33 defaultConfig { @@ -13,8 +19,8 @@ android { versionCode 99 versionName "1.2.0+fork.99.moshinda" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "nl-rNL", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW" - } + resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW'] + } signingConfigs { nightly{ @@ -88,14 +94,19 @@ android { setRoot "src/github" } } - lintOptions{ - checkReleaseBuilds false + namespace 'org.joinmastodon.android' + lint { abortOnError false + checkReleaseBuilds false + } + + buildFeatures { + buildConfig true } } dependencies { - api 'androidx.annotation:annotation:1.3.0' + api 'androidx.annotation:annotation:1.6.0' implementation 'com.squareup.okhttp3:okhttp:3.14.9' implementation 'me.grishka.litex:recyclerview:1.2.1.1' implementation 'me.grishka.litex:swiperefreshlayout:1.1.0.1' @@ -104,7 +115,7 @@ dependencies { implementation 'me.grishka.litex:viewpager:1.0.0' implementation 'me.grishka.litex:viewpager2:1.0.0' implementation 'me.grishka.appkit:appkit:1.2.7' - implementation 'com.google.code.gson:gson:2.8.9' + implementation 'com.google.code.gson:gson:2.9.0' implementation 'org.jsoup:jsoup:1.14.3' implementation 'com.squareup:otto:1.3.8' implementation 'de.psdev:async-otto:1.0.3' diff --git a/mastodon/src/main/AndroidManifest.xml b/mastodon/src/main/AndroidManifest.xml index ecfee8e21..aedc1fbdc 100644 --- a/mastodon/src/main/AndroidManifest.xml +++ b/mastodon/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java b/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java index 9dfbfdc83..7dedffd54 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java @@ -5,8 +5,6 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; -import org.joinmastodon.android.R; - import me.grishka.appkit.api.ErrorResponse; public class MastodonErrorResponse extends ErrorResponse{ @@ -22,7 +20,7 @@ public class MastodonErrorResponse extends ErrorResponse{ @Override public void bindErrorView(View view){ - TextView text=view.findViewById(R.id.error_text); + TextView text=view.findViewById(me.grishka.appkit.R.id.error_text); text.setText(error); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java index ef3c5598f..8a2562c49 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java @@ -119,7 +119,7 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene content.setOrientation(LinearLayout.VERTICAL); FrameLayout fragmentContainer=new FrameLayout(getActivity()); - fragmentContainer.setId(R.id.fragment_wrap); + fragmentContainer.setId(me.grishka.appkit.R.id.fragment_wrap); content.addView(fragmentContainer, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f)); inflater.inflate(R.layout.tab_bar, content); @@ -143,10 +143,10 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene if(savedInstanceState==null){ getChildFragmentManager().beginTransaction() - .add(R.id.fragment_wrap, homeTabFragment) - .add(R.id.fragment_wrap, searchFragment).hide(searchFragment) - .add(R.id.fragment_wrap, notificationsFragment).hide(notificationsFragment) - .add(R.id.fragment_wrap, profileFragment).hide(profileFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, homeTabFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, searchFragment).hide(searchFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, notificationsFragment).hide(notificationsFragment) + .add(me.grishka.appkit.R.id.fragment_wrap, profileFragment).hide(profileFragment) .commit(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java index cac91502a..f583ba1db 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java @@ -16,6 +16,7 @@ import org.joinmastodon.android.events.PollUpdatedEvent; import org.joinmastodon.android.events.RemoveAccountPostsEvent; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.CacheablePaginatedResponse; +import org.joinmastodon.android.model.Emoji; import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.model.PaginatedResponse; @@ -24,6 +25,7 @@ import org.joinmastodon.android.ui.displayitems.AccountCardStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; import org.joinmastodon.android.ui.displayitems.TextStatusDisplayItem; +import org.joinmastodon.android.ui.text.HtmlParser; import org.joinmastodon.android.ui.utils.DiscoverInfoBannerHelper; import org.joinmastodon.android.ui.utils.InsetStatusItemDecoration; import org.joinmastodon.android.ui.utils.UiUtils; @@ -88,6 +90,13 @@ public class NotificationsListFragment extends BaseStatusListFragment buildDisplayItems(Notification n){ Account reportTarget = n.report == null ? null : n.report.targetAccount == null ? null : n.report.targetAccount; + Emoji emoji = new Emoji(); + if(n.emojiUrl!=null){ + emoji.shortcode=n.emoji.substring(1,n.emoji.length()-1); + emoji.url=n.emojiUrl; + emoji.staticUrl=n.emojiUrl; + emoji.visibleInPicker=false; + } String extraText=switch(n.type){ case FOLLOW -> getString(R.string.user_followed_you); case FOLLOW_REQUEST -> getString(R.string.user_sent_follow_request); @@ -98,8 +107,9 @@ public class NotificationsListFragment extends BaseStatusListFragment getString(R.string.sk_post_edited); case SIGN_UP -> getString(R.string.sk_signed_up); case REPORT -> getString(R.string.sk_reported); + case EMOJI_REACTION -> getString(R.string.sk_reacted, n.emoji); }; - HeaderStatusDisplayItem titleItem=extraText!=null ? new HeaderStatusDisplayItem(n.id, n.account, n.createdAt, this, accountID, n.status, extraText, n, null) : null; + HeaderStatusDisplayItem titleItem=extraText!=null ? new HeaderStatusDisplayItem(n.id, n.account, n.createdAt, this, accountID, n.status, n.emojiUrl!=null ? HtmlParser.parseCustomEmoji(extraText, Collections.singletonList(emoji)) : extraText, n, null) : null; if(n.status!=null){ ArrayList items=StatusDisplayItem.buildItems(this, n.status, accountID, n, knownAccounts, titleItem!=null, titleItem==null, n, false, Filter.FilterContext.NOTIFICATIONS); if(titleItem!=null) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java index 367e60c20..e6275e921 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java @@ -402,7 +402,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState){ super.onSelectedChanged(viewHolder, actionState); if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ - viewHolder.itemView.setTag(R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() + viewHolder.itemView.setTag(me.grishka.appkit.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); draggedViewHolder=viewHolder; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 5e718ac5f..41d8be2c2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -1512,7 +1512,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState){ super.onSelectedChanged(viewHolder, actionState); if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ - viewHolder.itemView.setTag(R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() + viewHolder.itemView.setTag(me.grishka.appkit.R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); draggedViewHolder=viewHolder; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java b/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java index b104e86bf..264f6a54d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Notification.java @@ -20,6 +20,8 @@ public class Notification extends BaseModel implements DisplayItemsParent{ public Account account; public Status status; public Report report; + public String emoji; + public String emojiUrl; @Override public void postprocess() throws ObjectValidationException{ @@ -54,7 +56,9 @@ public class Notification extends BaseModel implements DisplayItemsParent{ @SerializedName("admin.sign_up") SIGN_UP, @SerializedName("admin.report") - REPORT + REPORT, + @SerializedName("pleroma:emoji_reaction") + EMOJI_REACTION } @Parcel diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java index 6c776ee89..4fd615f9b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java @@ -86,13 +86,13 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ public final Status status; private boolean hasVisibilityToggle; boolean needBottomPadding; - private String extraText; + private CharSequence extraText; private Notification notification; private ScheduledStatus scheduledStatus; private Announcement announcement; private Consumer consumeReadAnnouncement; - public HeaderStatusDisplayItem(String parentID, Account user, Instant createdAt, BaseStatusListFragment parentFragment, String accountID, Status status, String extraText, Notification notification, ScheduledStatus scheduledStatus){ + public HeaderStatusDisplayItem(String parentID, Account user, Instant createdAt, BaseStatusListFragment parentFragment, String accountID, Status status, CharSequence extraText, Notification notification, ScheduledStatus scheduledStatus){ super(parentID, parentFragment); user=scheduledStatus != null ? AccountSessionManager.getInstance().getAccount(accountID).self : user; this.user=user; @@ -117,6 +117,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ } } this.extraText=extraText; + emojiHelper.addText(extraText); } public static HeaderStatusDisplayItem fromAnnouncement(Announcement a, Status fakeStatus, Account instanceUser, BaseStatusListFragment parentFragment, String accountID, Consumer consumeReadID) { diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java index bd1c7c06f..83353ad8e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java @@ -1,5 +1,7 @@ package org.joinmastodon.android.ui.displayitems; +import static org.joinmastodon.android.GlobalUserPreferences.*; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -181,10 +183,11 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ altTextIndex=index; Attachment att=item.attachments.get(index); boolean hasAltText = !TextUtils.isEmpty(att.description); - altTextButton.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE); - noAltTextButton.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE); - altText.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE); - noAltText.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE); + if ((hasAltText && !showAltIndicator) || (!hasAltText && !showNoAltIndicator)) return; + altTextButton.setVisibility(hasAltText && showAltIndicator ? View.VISIBLE : View.GONE); + noAltTextButton.setVisibility(!hasAltText && showNoAltIndicator ? View.VISIBLE : View.GONE); + altText.setVisibility(hasAltText && showAltIndicator ? View.VISIBLE : View.GONE); + noAltText.setVisibility(!hasAltText && showNoAltIndicator ? View.VISIBLE : View.GONE); altText.setText(att.description); altTextWrapper.setVisibility(View.VISIBLE); altTextWrapper.setBackgroundResource(hasAltText ? R.drawable.bg_image_alt_overlay : R.drawable.bg_image_no_alt_overlay); @@ -251,8 +254,7 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{ boolean hasAltText = !TextUtils.isEmpty(item.attachments.get(i).description); if(c.btnsWrap!=null && c.btnsWrap!=btn - && ((hasAltText && GlobalUserPreferences.showAltIndicator) - || (!hasAltText && GlobalUserPreferences.showNoAltIndicator)) + && ((hasAltText && showAltIndicator) || (!hasAltText && showNoAltIndicator)) ) c.btnsWrap.setVisibility(View.VISIBLE); i++; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java index 6e0a6b002..faafc39d4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/CustomEmojiHelper.java @@ -29,6 +29,16 @@ public class CustomEmojiHelper{ } } + public void addText(CharSequence text) { + if(!(text instanceof Spanned)) + return; + CustomEmojiSpan[] spans=((Spanned) text).getSpans(0, text.length(), CustomEmojiSpan.class); + for(List group:Arrays.stream(spans).collect(Collectors.groupingBy(s->s.emoji)).values()){ + this.spans.add(group); + requests.add(group.get(0).createImageLoaderRequest()); + } + } + public int getImageCount(){ return requests.size(); } diff --git a/mastodon/src/main/res/values-ca-rES/strings_sk.xml b/mastodon/src/main/res/values-ca-rES/strings_sk.xml index abcebd6c1..3f56e760e 100644 --- a/mastodon/src/main/res/values-ca-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-ca-rES/strings_sk.xml @@ -69,7 +69,7 @@ Traduït amb %s Llengua: %s Llengües disponibles - %s (%s) + %1$s (%2$s) Segur que vols esborrar les llengües recents\? El tauró et saluda! Per a començar, introdueix el domini de la instància a continuació. Desactiva el desplaçament entre pestanyes diff --git a/mastodon/src/main/res/values-cy/strings_sk.xml b/mastodon/src/main/res/values-cy/strings_sk.xml index 37c91af2e..972316ea4 100644 --- a/mastodon/src/main/res/values-cy/strings_sk.xml +++ b/mastodon/src/main/res/values-cy/strings_sk.xml @@ -40,7 +40,7 @@ Dim diweddariad ar gael Gwirio am ddiweddariad Caniatáu mwy nag un dewis - %s (%s) + %1$s (%2$s) Analluogi llusgo rhwng tabiau Dewisiadau postio Rheolau diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index a2fea70e2..4d5aacb69 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -38,7 +38,7 @@ Laufschrift in Titelleisten deaktivieren Zu Megalodon beitragen Föderierte Timeline anzeigen - Beitrags-Benachrichtigungen + Beitrags-​Benachrichtigungen Farbschema Pink Violett @@ -50,7 +50,7 @@ Mehrfachantworten erlauben Übersetzt mit %s Sprache: %s - %s (%s) + %1$s (%2$s) Sicher, dass du die Liste der zuletzt verwendeten Sprachen leeren willst\? Übersetzen Original anzeigen @@ -164,7 +164,7 @@ Fehlende Bildbeschreibung Erinnerung zum Hinzufügen von Bildbeschreibungen ausschalten ALT - Bearbeitet einen geteilten Beitrag + einen geteilten Beitrag bearbeitet Timelines Timeline Hashtag @@ -271,6 +271,5 @@ Thread öffnen Kompakte Geteilt/Geantwortet-Zeile “Als Antwort auf”-Zeile über Profilbild - Vor dem Rebloggen bestätigen - Schaltfläche \"Neue Beiträge anzeigen\" + Vor dem Teilen bestätigen \ No newline at end of file diff --git a/mastodon/src/main/res/values-es-rES/strings_sk.xml b/mastodon/src/main/res/values-es-rES/strings_sk.xml index 1436d92f9..7cc725731 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -53,7 +53,7 @@ Traducido mediante %s Idioma: %s Idiomas disponibles - %s (%s) + %1$s (%2$s) ¿Seguro que quieres borrar los idiomas usados recientemente\? Borrar idiomas usados recientemente ¡El tiburón te saluda! Para empezar, introduce a continuación el nombre del dominio de tu instancia. @@ -272,6 +272,5 @@ \"En respuesta a\" línea sobre el avatar Mostrar hilo Línea compacta de reblog/respuesta - Botón “Mostrar nuevas publicaciones” - Confirmar antes de impulsar + Confirmar antes de volver a publicar \ No newline at end of file diff --git a/mastodon/src/main/res/values-eu-rES/strings_sk.xml b/mastodon/src/main/res/values-eu-rES/strings_sk.xml index f54658654..bf1a574eb 100644 --- a/mastodon/src/main/res/values-eu-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-eu-rES/strings_sk.xml @@ -35,7 +35,7 @@ Lagundu Megalodon %s-ekin itzulia Hizkuntza: %s - %s (%s) + %1$s (%2$s) Beste kontu baten laster-marka %s bezala laster-markara eramana Dagoeneko laster-marka da @@ -261,16 +261,14 @@ Jarraitu beste kontu batetik %s-(d/t)ik jarraitua Automatikoki ezkutatu Idatzi botoia - Erantzun guztiak - Niri eginiko erantzunak - Jarraitzen ditudanei eginiko erantzunak Erantzunez - “Honi erantzunez” abatarraren gaineko lerroa - Erakutsi haria - Berretsi bultzatu aurretik - %s aipatzen Erantzunaren ikusgarritasuna - “Erakutsi argitalpen berriak” botoia - %s-(r)i erantzuna bidali da - Bultzada / erantzun lerro trinkoa + Erantzun guztiak + Jarraitzen ditudanei eginiko erantzunak + \"Honi erantzunez\" abatarraren gaineko lerroa + Erakutsi haria + Bultzada/erantzun lerro trinkoa + %s aipatzen + Niri eginiko erantzunak + %s-(r)i erantzun \ No newline at end of file diff --git a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml index 81abb4f74..3fd9ae09c 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -53,7 +53,7 @@ Traduit en utilisant %s Langue : %s Langues disponibles - %s (%s) + %1$s (%2$s) Êtes-vous sûr de vouloir effacer vos langues récemment utilisées \? Effacer les langues récemment utilisées exemple.social @@ -273,4 +273,5 @@ Afficher le fil Ligne de repost/réponse compacte Ligne \"En réponse à\" au-dessus de l\'avatar + Confirmer avant de reposter \ No newline at end of file diff --git a/mastodon/src/main/res/values-gl-rES/strings_sk.xml b/mastodon/src/main/res/values-gl-rES/strings_sk.xml index c5a833878..47e008637 100644 --- a/mastodon/src/main/res/values-gl-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-gl-rES/strings_sk.xml @@ -44,7 +44,7 @@ Desactivar desprazamento do texto na barra de título ¡Benvida! Contribúe a Megalodon - %s (%s) + %1$s (%2$s) exemplo.social Idiomas dispoñíbeis Configurar perfil diff --git a/mastodon/src/main/res/values-hu-rHU/strings_sk.xml b/mastodon/src/main/res/values-hu-rHU/strings_sk.xml index 39397a9ab..af5cb9891 100644 --- a/mastodon/src/main/res/values-hu-rHU/strings_sk.xml +++ b/mastodon/src/main/res/values-hu-rHU/strings_sk.xml @@ -39,7 +39,7 @@ Összevont idővonal megjelenítése Biztos, hogy törölni szeretné a nemrég használt nyelveket\? Elérhető nyelvek - %s (%s) + %1$s (%2$s) Csak a megnyitott hozzászólások lefordítása Már reblogoltam Átlogolva mint %s diff --git a/mastodon/src/main/res/values-in-rID/strings_sk.xml b/mastodon/src/main/res/values-in-rID/strings_sk.xml index a3f2638d9..92d01deda 100644 --- a/mastodon/src/main/res/values-in-rID/strings_sk.xml +++ b/mastodon/src/main/res/values-in-rID/strings_sk.xml @@ -53,7 +53,7 @@ Apakah Anda yakin ingin menghapus bahasa terkini yang Anda gunakan\? Sistem Bahasa yang tersedia - %s (%s) + %1$s (%2$s) Terjemahkan Tampilkan yang asli Bahasa: %s @@ -273,4 +273,5 @@ Baris “Membalas ke” di atas avatar Tampilkan utasan Baris berbagi/balasan + Konfirmasi sebelum membagikan ulang \ No newline at end of file diff --git a/mastodon/src/main/res/values-it-rIT/strings_sk.xml b/mastodon/src/main/res/values-it-rIT/strings_sk.xml index ad00a1c79..e853b6f4a 100644 --- a/mastodon/src/main/res/values-it-rIT/strings_sk.xml +++ b/mastodon/src/main/res/values-it-rIT/strings_sk.xml @@ -51,7 +51,7 @@ Mostra originale Tradotto con %s Lingua: %s - %s (%s) + %1$s (%2$s) Sei sicuro di voler cancellare le lingue usate di recente\? Cancella le lingue usate di recente Benvenuto! diff --git a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml index 2f1bce858..619d57b8c 100644 --- a/mastodon/src/main/res/values-ko-rKR/strings_sk.xml +++ b/mastodon/src/main/res/values-ko-rKR/strings_sk.xml @@ -51,7 +51,7 @@ 번역하기 원본 보기 언어: %s - %s (%s) + %1$s (%2$s) %s를 통해 번역함 모든 언어 최근 사용한 언어 지우기 @@ -100,7 +100,7 @@ 다른 계정으로 열기 리소스를 찾을 수 없습니다 %s 인스턴스에서 찾아오는 중 - 언급하여 게시 + 인용하여 게시 게시하지 않은 게시물 초안 작성 게시 예약 @@ -240,7 +240,7 @@ Glitch 로컬에만 게시 모드 서버가 로컬에만 게시하는 것을 지원함 로컬에만 게시 - 멘션한 사람에게만 게시 + 멘션된 사람들만 보임 인스턴스 기능 목록 사용하시는 인스턴스가 Glitch에서 실행 중인 경우 활성화하세요. Hometown이나 Akkoma의 경우 활성화할 필요가 없습니다. “새 게시물 보기” 버튼 @@ -267,7 +267,7 @@ 모든 답글 팔로우한 계정에 대한 답글 나에 대한 답글 - %s 님 언급 + %s 님 인용 아바타 위의 “…님에게 답글” 정보 스레드 보기 %s 님에게 답글을 보냈습니다 diff --git a/mastodon/src/main/res/values-my/strings_sk.xml b/mastodon/src/main/res/values-my/strings_sk.xml index 6c6b70b30..ef9343e53 100644 --- a/mastodon/src/main/res/values-my/strings_sk.xml +++ b/mastodon/src/main/res/values-my/strings_sk.xml @@ -45,7 +45,7 @@ တခြားအကောင့်ဖြင့် ရီပလိုင်းပြန်မည် %s ဖြင့် ဘာသာပြန်ထားသည် ဘာသာစကား။ ။%s - %s (%s) + %1$s (%2$s) Filter များကို စီစဉ်မည် လုံခြုံရေးဆိုင်ရာ ဆက်တင်များ စည်းကမ်းချက်များ diff --git a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml index 74d3be6ae..e0f16cfa4 100644 --- a/mastodon/src/main/res/values-nl-rNL/strings_sk.xml +++ b/mastodon/src/main/res/values-nl-rNL/strings_sk.xml @@ -53,7 +53,7 @@ Bookmark opgeslagen als %s Al als bookmark opgeslagen Als favoriet opgeslagen als %s - %s (%s) + %1$s (%2$s) example.social Antwoord met ander account Zelfde icoon voor alle meldingen diff --git a/mastodon/src/main/res/values-pl-rPL/strings_sk.xml b/mastodon/src/main/res/values-pl-rPL/strings_sk.xml index 3cd66e6c3..9930482df 100644 --- a/mastodon/src/main/res/values-pl-rPL/strings_sk.xml +++ b/mastodon/src/main/res/values-pl-rPL/strings_sk.xml @@ -53,7 +53,7 @@ Przetłumaczono przy użyciu %s Język: %s Dostępne języki - %s (%s) + %1$s (%2$s) Czy na pewno chcesz wyczyścić ostatnio użyte języki\? Wyczyść ostatnio użyte języki przykład.social @@ -271,6 +271,5 @@ Tekst \"W odpowiedzi na\" nad avatarem Pokaż wątek Zmniejsz linię reblogu/odpowiedzi - Przycisk \"Pokaż nowe wpisy\" Potwierdź przed reblogowaniem \ No newline at end of file diff --git a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml index 11c34ab32..e9bb966f4 100644 --- a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml +++ b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml @@ -51,7 +51,7 @@ Traduzido usando %s Idioma: %s Idiomas disponíveis - %s (%s) + %1$s (%2$s) Você tem certeza que deseja limpar os idiomas usados recentemente\? Limpar idiomas usados recentemente Notificações de publicações diff --git a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml index 5d0fdfa59..c6c48cbef 100644 --- a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml +++ b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml @@ -25,7 +25,7 @@ Показать оригинал Переведено через %s Доступные языки - %s (%s) + %1$s (%2$s) Добро пожаловать! example.social Автоматически загружать новые посты diff --git a/mastodon/src/main/res/values-sl-rSI/strings_sk.xml b/mastodon/src/main/res/values-sl-rSI/strings_sk.xml index 07cf120c5..26d5bddca 100644 --- a/mastodon/src/main/res/values-sl-rSI/strings_sk.xml +++ b/mastodon/src/main/res/values-sl-rSI/strings_sk.xml @@ -52,7 +52,7 @@ Barvna paleta Dovoli več izbir Pokaži izvirnik - %s (%s) + %1$s (%2$s) Dobrodošli! primer.social Že dodano med zaznamke diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 06b8df537..f07c6c240 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -13,7 +13,7 @@ Перекладено за допомогою %s Мова: %s Доступні мови - %s (%s) + %1$s (%2$s) Очистити нещодавно використані мови Завжди розкривати попередження про вміст Дописи @@ -272,6 +272,5 @@ Рядок «У відповідь» над аватаром Показати потік Компактний рядок для поширеного допису/відповіді - Запросити підтвердження перед репостом - Кнопка \"Показати нові публікації\" + Підтверджувати поширення \ No newline at end of file diff --git a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml index db21fcf59..1621f008f 100644 --- a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml +++ b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml @@ -57,7 +57,7 @@ 使用 %s 翻译 语言:%s 可用语言 - %s (%s) + %1$s (%2$s) example.social 禁用选项卡之间的滑动 设置个人资料 diff --git a/mastodon/src/main/res/values-zh-rTW/strings_sk.xml b/mastodon/src/main/res/values-zh-rTW/strings_sk.xml index e6449977a..c6f3e1a59 100644 --- a/mastodon/src/main/res/values-zh-rTW/strings_sk.xml +++ b/mastodon/src/main/res/values-zh-rTW/strings_sk.xml @@ -7,7 +7,7 @@ 通過 %s 翻譯 語言: %s 可用語言 - %s (%s) + %1$s (%2$s) 歡迎! Megalodon 釘選 diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index caad717ec..a2fa16430 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -60,7 +60,7 @@ Translated using %s Language: %s Available languages - %s (%s) + %1$s (%2$s) Clear recently used languages Are you sure you want to clear your recently used languages? Welcome! @@ -89,8 +89,8 @@ %s does not appear to support translation. Looking it up on the Fediverse Looking it up on %s - Undo reblog - Reblog with visibility + Undo boost + Boost with visibility Post about this Hashtags you follow Copy link to post @@ -102,9 +102,9 @@ Favorite with other account Favorited as %s Already favorited - Reblog with other account - Reblogged as %s - Already reblogged + Boost with other account + Boosted as %s + Already boosted Reply with other account Uniform icon for all notifications Forward to %s @@ -230,7 +230,7 @@ ALT edited Edited posts - Edits a reblogged post + Edits a boosted post Attach file Searching… No results @@ -252,6 +252,7 @@ Enable this if your home instance runs on Glitch. Not needed for Hometown or Akkoma. signed up reported + reacted with %s Users signing up New reports Server version: %s @@ -271,6 +272,6 @@ In reply “In reply to” line above avatar Show thread - Compact reblog/reply line - Confirm before reblogging + Compact boost/reply line + Confirm before boosting \ No newline at end of file diff --git a/metadata/fr/full_description.txt b/metadata/fr/full_description.txt deleted file mode 100644 index 4afd4be3a..000000000 --- a/metadata/fr/full_description.txt +++ /dev/null @@ -1,17 +0,0 @@ -Megalodon is a modified version of the official Mastodon Android app adding important features that are missing in the official app, such as the federated timeline, unlisted posting, bookmarks and an image description viewer. - -Key features - -- Unlisted posting: Post publicly without having your post show up in trends, hashtags or public timelines. -- Federated timeline: See all public posts from people on all other Fediverse neighborhoods your home instance is connected to. -- Image description viewer: Quickly check whether an image or video has an alt text attached to it. -- Pinning posts: Pin your most important posts to your profile and see what others have pinned using the “Pinned“ tab. -- Bookmarks: Quickly save posts and find them later in the Bookmarks list. -- Follow hashtags: See new posts from specific hashtags directly in your home timeline by following them. -- Answering follow requests: Accept or decline follow requests from your notifications or the dedicated Follow requests list. -- Delete and re-draft: The much-loved feature that made editing possible without an actual editing function. - -Unreleased official features, available in advance - -- Editing posts -- Integrated updater for GitHub releases diff --git a/metadata/ko/changelogs/83.txt b/metadata/ko/changelogs/83.txt new file mode 100644 index 000000000..a28dff874 --- /dev/null +++ b/metadata/ko/changelogs/83.txt @@ -0,0 +1,5 @@ +- 알림창에서 바로 좋아요/보관/답글 달기 +- 타임라인에서 리블로그와 답글에 더 예쁘고 일관성 있는 헤더 제공 +- 알림 표시 점 (아직 실제로 알림을 확인하지 않은 경우) +- Akkoma 유저를 위한 업데이트: 답글 표시 범위, 정렬된 스레드 답글, 인용, … +- 충돌 수정 및 사소한 업데이트