Merge branch 'master' into donations

# Conflicts:
#	mastodon/build.gradle
This commit is contained in:
Grishka 2024-07-03 01:30:43 +03:00
commit db84317f7f
7 changed files with 45 additions and 14 deletions

View File

@ -13,8 +13,8 @@ android {
applicationId "org.joinmastodon.android" applicationId "org.joinmastodon.android"
minSdk 23 minSdk 23
targetSdk 34 targetSdk 34
versionCode 107 versionCode 108
versionName "2.5.4" versionName "2.5.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@ -281,11 +281,11 @@ public class AccountSessionManager{
} }
} }
if(loadedInstances){ if(loadedInstances){
maybeUpdateCustomEmojis(domains); maybeUpdateInstanceInfo(domains);
} }
} }
private void maybeUpdateCustomEmojis(Set<String> domains){ private void maybeUpdateInstanceInfo(Set<String> domains){
long now=System.currentTimeMillis(); long now=System.currentTimeMillis();
for(String domain:domains){ for(String domain:domains){
Long lastUpdated=instancesLastUpdated.get(domain); Long lastUpdated=instancesLastUpdated.get(domain);
@ -399,7 +399,7 @@ public class AccountSessionManager{
} }
if(!loadedInstances){ if(!loadedInstances){
loadedInstances=true; loadedInstances=true;
MastodonAPIController.runInBackground(()->maybeUpdateCustomEmojis(domains)); MastodonAPIController.runInBackground(()->maybeUpdateInstanceInfo(domains));
} }
} }

View File

@ -691,7 +691,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment{
boolean found=false; boolean found=false;
for(int i=0;i<list.getChildCount();i++){ for(int i=0;i<list.getChildCount();i++){
RecyclerView.ViewHolder holder=list.getChildViewHolder(list.getChildAt(i)); RecyclerView.ViewHolder holder=list.getChildViewHolder(list.getChildAt(i));
if(holder.getAbsoluteAdapterPosition()==mergeAdapter.getPositionForAdapter(adapter)+idx && holder instanceof InstanceViewHolder ivh){ if(holder instanceof InstanceViewHolder ivh && holder.getAbsoluteAdapterPosition()==mergeAdapter.getPositionForAdapter(adapter)+idx){
ivh.radioButton.setChecked(false); ivh.radioButton.setChecked(false);
found=true; found=true;
break; break;

View File

@ -27,11 +27,7 @@ public class CardViewModel{
this.parentObject=parentObject; this.parentObject=parentObject;
this.imageRequest=TextUtils.isEmpty(card.image) ? null : new UrlImageLoaderRequest(card.image, V.dp(width), V.dp(height)); this.imageRequest=TextUtils.isEmpty(card.image) ? null : new UrlImageLoaderRequest(card.image, V.dp(width), V.dp(height));
Account authorAccount; Account authorAccount=getAuthorAccount();
if(card.authors!=null && !card.authors.isEmpty() && card.authors.get(0).account!=null)
authorAccount=card.authors.get(0).account;
else
authorAccount=card.authorAccount;
if(authorAccount!=null){ if(authorAccount!=null){
parsedAuthorName=new SpannableStringBuilder(authorAccount.displayName); parsedAuthorName=new SpannableStringBuilder(authorAccount.displayName);
@ -46,7 +42,7 @@ public class CardViewModel{
} }
public int getImageCount(){ public int getImageCount(){
return 1+(card.authorAccount!=null ? (1+authorNameEmojiHelper.getImageCount()) : 0); return 1+(getAuthorAccount()!=null ? (1+authorNameEmojiHelper.getImageCount()) : 0);
} }
public ImageLoaderRequest getImageRequest(int index){ public ImageLoaderRequest getImageRequest(int index){
@ -56,4 +52,11 @@ public class CardViewModel{
default -> authorNameEmojiHelper.getImageRequest(index-2); default -> authorNameEmojiHelper.getImageRequest(index-2);
}; };
} }
public Account getAuthorAccount(){
if(card.authors!=null && !card.authors.isEmpty() && card.authors.get(0).account!=null)
return card.authors.get(0).account;
else
return card.authorAccount;
}
} }

View File

@ -189,7 +189,7 @@ public class LinkCardHolder<T extends LinkCardHolder.LinkCardProvider> extends S
private void onAuthorChipClick(View v){ private void onAuthorChipClick(View v){
Bundle args=new Bundle(); Bundle args=new Bundle();
args.putString("account", accountID); args.putString("account", accountID);
args.putParcelable("profileAccount", Parcels.wrap(item.getCard().card.authorAccount)); args.putParcelable("profileAccount", Parcels.wrap(item.getCard().getAuthorAccount()));
Nav.go(activity, ProfileFragment.class, args); Nav.go(activity, ProfileFragment.class, args);
} }

View File

@ -754,7 +754,7 @@ Kuo daugiau žmonių seki, tuo aktyvesnis ir įdomesnis jis bus.</string>
<string name="handle_server_explanation_own">Tavo skaitmeniniai namai, kuriuose saugomi visi tavo įrašai. Nepatinka šis? Bet kada perkelk serverius ir atsivesk bei savo sekėjus.</string> <string name="handle_server_explanation_own">Tavo skaitmeniniai namai, kuriuose saugomi visi tavo įrašai. Nepatinka šis? Bet kada perkelk serverius ir atsivesk bei savo sekėjus.</string>
<string name="handle_explanation_own">Kadangi tavo socialinis medijos vardas pasako, kas ir kur esi, žmonės gali bendrauti su tavimi visame socialiniame internete, kurį sudaro &lt;a&gt;„ActivityPub“ veikiančios platformos&lt;/a&gt;.</string> <string name="handle_explanation_own">Kadangi tavo socialinis medijos vardas pasako, kas ir kur esi, žmonės gali bendrauti su tavimi visame socialiniame internete, kurį sudaro &lt;a&gt;„ActivityPub“ veikiančios platformos&lt;/a&gt;.</string>
<string name="what_is_activitypub_title">Kas yra „ActivityPub“?</string> <string name="what_is_activitypub_title">Kas yra „ActivityPub“?</string>
<string name="what_is_activitypub">„ActivityPub“ tai tarsi kalba, kuria „Mastodon“ kalba su kitais socialiniais tinklais.\n\nTai leidžia tau bendrauti su žmonėmis ne tik „Mastodon“ tinkle, bet ir įvairiose socialinėse programėlėse.</string> <string name="what_is_activitypub">„ActivityPub“ tai tarsi kalba, kuria „Mastodon“ kalba su kitais socialiniais tinklais.\n\nTai leidžia tau bendrauti su žmonėmis ne tik „Mastodon“ platformoje, bet ir įvairiose socialinėse programėlėse.</string>
<string name="handle_copied">Socialinis medijos vardas nukopijuotas į iškarpinę.</string> <string name="handle_copied">Socialinis medijos vardas nukopijuotas į iškarpinę.</string>
<string name="qr_code">QR kodas</string> <string name="qr_code">QR kodas</string>
<string name="scan_qr_code">Nuskaityti QR kodą</string> <string name="scan_qr_code">Nuskaityti QR kodą</string>

View File

@ -352,7 +352,9 @@
<string name="login_subtitle">Увійдіть за допомогою сервера, де ви створили свій обліковий запис.</string> <string name="login_subtitle">Увійдіть за допомогою сервера, де ви створили свій обліковий запис.</string>
<string name="server_url">URL-адреса сервера</string> <string name="server_url">URL-адреса сервера</string>
<string name="server_filter_any_language">Будь-яка мова</string> <string name="server_filter_any_language">Будь-яка мова</string>
<string name="server_filter_instant_signup">Миттєва реєстрація</string>
<string name="server_filter_manual_review">Ручна перевірка</string> <string name="server_filter_manual_review">Ручна перевірка</string>
<string name="server_filter_any_signup_speed">Будь-яка швидкість реєстрації</string>
<string name="server_filter_region_europe">Європа</string> <string name="server_filter_region_europe">Європа</string>
<string name="server_filter_region_north_america">Північна Америка</string> <string name="server_filter_region_north_america">Північна Америка</string>
<string name="server_filter_region_south_america">Південна Америка</string> <string name="server_filter_region_south_america">Південна Америка</string>
@ -781,4 +783,30 @@
<string name="notification_filter_following">Люди, на яких ви не підписані</string> <string name="notification_filter_following">Люди, на яких ви не підписані</string>
<string name="notification_filter_following_explanation">Доки ви не схвалюєте їх вручну</string> <string name="notification_filter_following_explanation">Доки ви не схвалюєте їх вручну</string>
<string name="notification_filter_followers">Люди, які не підписані на вас</string> <string name="notification_filter_followers">Люди, які не підписані на вас</string>
<string name="notification_filter_followers_explanation">Включаючи людей, які підписані на вас менш ніж три дні</string>
<string name="notification_filter_new_accounts">Нові облікові записи</string>
<string name="notification_filter_new_accounts_explanation">Створені за останні 30 днів</string>
<string name="notification_filter_mentions">Небажані приватні згадки</string>
<string name="notification_filter_mentions_explanation">Відфільтровується, якщо це не відповідь на вашу власну згадку або якщо ви відстежуєте відправника</string>
<string name="allow_notifications">Дозволити сповіщення</string>
<string name="mute_notifications">Відхилити запит на сповіщення</string>
<string name="notifications_from_user">Сповіщення від %s</string>
<string name="notifications_muted">Сповіщення від %s було відхилено.</string>
<string name="notifications_allowed">%s тепер з\'явиться у вашому списку сповіщень.</string>
<string name="visibility_subtitle_public">Усі з Mastodon та поза Mastodon</string>
<string name="visibility_subtitle_unlisted">Менше алгоритмічних фанфар</string>
<string name="visibility_subtitle_followers">Лише ваші підписники</string>
<string name="visibility_subtitle_private">Усі згадані в дописі</string>
<string name="view_boosts">Переглянути поширення</string>
<string name="view_favorites">Подивитися обране</string>
<string name="undo_reblog">Скасувати поширення</string>
<string name="undo_favorite">Скасувати вибране</string>
<string name="could_not_reach_server">Не вдалося зв\'язатися з сервером. Перевірте підключення та повторіть спробу?</string>
<string name="connection_timed_out">Час очікування запиту минув. Перевірте підключення і повторіть спробу?</string>
<string name="server_error">Щось пішло не так при спілкуванні з вашим сервером. Це, скоріше за все, не ваша помилка. Спробувати ще раз?</string>
<string name="not_found">Можливо, його видалили, або його взагалі ніколи не існувало.</string>
<string name="no_servers_found">Не знайдено серверів для \"%s\"</string>
<string name="signup_username_taken">Це ім\'я вже зайнято. Спробуйте інше, або &lt;a&gt;оберіть інший сервер&lt;/a&gt;.</string>
<string name="signup_email_invalid">Це не схоже на дійсну адресу електронної пошти.</string>
<string name="signup_email_taken">Адреса пошти вже використана. Ви &lt;a&gt;забули ваш пароль&lt;/a&gt;?</string>
</resources> </resources>