Compare commits

..

43 Commits

Author SHA1 Message Date
Jacocococo
c26df5762f Still set desired height 2024-08-04 14:44:08 -03:00
Jacocococo
2021c335ac None-square emoji for reactions 2024-08-04 14:44:08 -03:00
Jacocococo
d121f14d30 Non-square emoji in text views 2024-08-04 14:44:08 -03:00
LucasGGamerM
d1a2a70cdc Merge pull request #495 from FineFindus/feat/trending-links-timeline-improvements
feat(Timeline/TrendingLinks): display URL, update icon
2024-08-04 12:16:42 -03:00
FineFindus
89ef482e2e feat(Timeline/TrendingLink): use open icon for open action
The previous icon made it hard to recognize what the action was supposed
to do. Additionally, the new one also indicate that it will take the
user to an external website.
2024-08-04 15:58:35 +02:00
FineFindus
9918649d7c feat(Timeline/TrendingLink): provide WebURL
Since the Web version now has a user-visible timeline, we can provide a
URL to that.
2024-08-04 15:56:32 +02:00
LucasGGamerM
09185faf9a Merge remote-tracking branch 'refs/remotes/FineFindus/feat/quote-filter-hide'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
2024-08-04 09:33:55 -03:00
LucasGGamerM
bed201a2f7 docs: add 107 changelog 2024-08-03 10:01:56 -03:00
LucasGGamerM
5e7a4c0136 build: bump version number 2024-08-03 09:55:17 -03:00
gallegonovato
bcb8717d5f Translated using Weblate (Spanish)
Currently translated at 100.0% (420 of 420 strings)

Translation: Moshidon/megalodon_values
Translate-URL: https://translate.codeberg.org/projects/moshidon/megalodon_values/es/
2024-08-03 12:50:50 +00:00
gallegonovato
ed1c1bd097 Translated using Weblate (Spanish)
Currently translated at 100.0% (39 of 39 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2024-08-03 12:50:50 +00:00
joenepraat
f480532fd6 Translated using Weblate (Dutch)
Currently translated at 100.0% (39 of 39 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/nl/
2024-08-03 12:50:50 +00:00
Vaclovas Intas
cc056cef08 Translated using Weblate (Lithuanian)
Currently translated at 23.0% (9 of 39 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/lt/
2024-08-03 12:50:50 +00:00
Hayny
9e7445b8d8 Translated using Weblate (French)
Currently translated at 5.1% (2 of 39 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/fr/
2024-08-03 12:50:50 +00:00
Lefteris T
e2d96d3bc7 Translated using Weblate (Greek)
Currently translated at 100.0% (420 of 420 strings)

Translation: Moshidon/megalodon_values
Translate-URL: https://translate.codeberg.org/projects/moshidon/megalodon_values/el/
2024-08-03 12:50:50 +00:00
Lefteris T
4f5c99be21 Translated using Weblate (Greek)
Currently translated at 100.0% (120 of 120 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/el/
2024-08-03 12:50:50 +00:00
LucasGGamerM
0388f9d9be fix(toggle-expanded): fix crash when headers happen to be empty 2024-08-03 09:40:28 -03:00
LucasGGamerM
c45128ced0 fix(unofficial-quotes): fix crash when results.statuses is null 2024-08-03 09:36:16 -03:00
LucasGGamerM
f404d2f9cd Merge pull request #491 from FineFindus/fix/discover-scroll-regression
fix(Discover): switch post and hashtag fragments everywhere
2024-08-03 08:05:10 -03:00
FineFindus
2dada69eb8 fix(Discover): switch post and hashtag fragments everywhere
Fixes a regression in 5edbe9b826, whcih
did not switch the fragments everywhere. This caused the scroll-to-top
functionality to not work and the posts to not immediatly load.

Closes https://github.com/LucasGGamerM/moshidon/issues/483.
2024-08-03 11:30:58 +02:00
FineFindus
b7e0596014 feat(StatusDisplayItem): do not hide self-quoted posts 2024-08-03 11:22:40 +02:00
FineFindus
dbef984908 feat(StatusDisplayItem): hide statuses with quotes of muted/blocked
accounts

Hides Statuses with non-official quotes of accounts that are
blocked/muted. This is equivalent to how misskey handles muted quotes.

Closes https://github.com/LucasGGamerM/moshidon/issues/488.
2024-08-03 10:59:51 +02:00
FineFindus
55259f103d feat(Quote): hide filtered quotes
Hides quote of that would have been hidden by a filter, essentially
reverting back to the previous behaviour.

(Partially) Closes: https://github.com/LucasGGamerM/moshidon/issues/488
2024-08-03 00:08:45 +02:00
LucasGGamerM
81519fe906 fix(f-droid): remove f-droid version suffix 2024-08-02 16:43:55 -03:00
LucasGGamerM
07ab3c394a Merge pull request #485 from FineFindus/feat/draft-improvements
feat(Draft): display ScheduledStatus highlighted and formatted
2024-08-02 16:15:05 -03:00
LucasGGamerM
620cc94351 fix(pixelfed): make pixelfed login work again 2024-08-02 16:02:04 -03:00
LucasGGamerM
2494918171 fix(self-updater): export receiver for android 13 and plus 2024-08-02 15:30:27 -03:00
Grishka
a0bed5e739 fix: cherrypick a patch for the Sdk 34 from upstream 2024-08-02 15:24:03 -03:00
FineFindus
a42bf86a1e feat: display ScheduledStatus rendered
Fakes the highlighting and formatting of ScheduledStatus by injecting
the correct HTML tags.

Fixes https://github.com/LucasGGamerM/moshidon/issues/478.
2024-08-01 19:32:53 +02:00
LucasGGamerM
9c7ae9653b Merge pull request #487 from FineFindus/fix/uri-crash
fix: check if uri is hierarchical
2024-08-01 14:27:05 -03:00
FineFindus
44473705b9 feat(Settings/About): hide pre-release option in nightly 2024-08-01 14:07:54 +02:00
FineFindus
f1d40f8963 fix(Tacking): check if uri is hierarchical
Checks if the given uri is hierarchical, as otherwise the
`getQueryParameterNames` function will throw an exception.
2024-08-01 14:07:38 +02:00
FineFindus
fbae5d8816 feat(Draft): only hide media preview if status is senstive
Closes https://github.com/LucasGGamerM/moshidon/issues/478.
2024-07-31 22:39:26 +02:00
LucasGGamerM
43afbb7523 Merge pull request #484 from FineFindus/fix/quote
fix: correctly render more unofficial quotes
2024-07-30 20:05:23 -03:00
LucasGGamerM
080815846f Merge pull request #482 from FineFindus/feat/GNOME-icon
feat(Timelines): add GNOME icon
2024-07-30 20:03:43 -03:00
FineFindus
4b6c6cbcfe refactor(Quotes): inlcude URL scheme in quote regex
This should increase the performance, whilst rejecting more incorrect
URLs and allowing more correct ones.
2024-07-30 21:51:36 +02:00
FineFindus
117037e7e8 feat(Quote): only show quotes for status without attachments 2024-07-30 20:47:37 +02:00
FineFindus
05972fc702 fix(Quotes): increase TLD max length 2024-07-30 20:47:08 +02:00
LucasGGamerM
28084b9f9e Merge remote-tracking branch 'refs/remotes/weblate/master' 2024-07-29 19:43:19 -03:00
joenepraat
02010df408 Translated using Weblate (Dutch)
Currently translated at 100.0% (420 of 420 strings)

Translation: Moshidon/megalodon_values
Translate-URL: https://translate.codeberg.org/projects/moshidon/megalodon_values/nl/
2024-07-29 22:34:59 +00:00
joenepraat
38f77c69d1 Translated using Weblate (Dutch)
Currently translated at 100.0% (39 of 39 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/nl/
2024-07-29 22:34:58 +00:00
joenepraat
d0a8c26b65 Translated using Weblate (Dutch)
Currently translated at 100.0% (120 of 120 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2024-07-29 22:34:58 +00:00
FineFindus
401602e5bc feat(Timelines): add GNOME icon 2024-07-29 22:38:56 +02:00
84 changed files with 611 additions and 217 deletions

View File

@@ -16,8 +16,8 @@ android {
applicationId "org.joinmastodon.android.moshinda"
minSdk 23
targetSdk 34
versionCode 106
versionName "2.3.0+fork.106.moshinda"
versionCode 107
versionName "2.3.0+fork.107.moshinda"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
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']
}
@@ -108,7 +108,8 @@ android {
}
fdroidRelease {
initWith release
versionNameSuffix '-fdroid'
// The F-droid build system doesn't like this at all for some reason.
// versionNameSuffix '-fdroid'
// signingConfig signingConfigs.release
}
}

View File

@@ -211,7 +211,13 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
if(state==UpdateState.DOWNLOADING)
throw new IllegalStateException();
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.TIRAMISU){
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), Context.RECEIVER_EXPORTED);
}else{
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
downloadID=dm.enqueue(
new DownloadManager.Request(Uri.parse(getPrefs().getString("apkURL", null)))
.setDestinationUri(Uri.fromFile(getUpdateApkFile()))

View File

@@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>

View File

@@ -88,8 +88,13 @@ public class AudioPlayerService extends Service{
nm=getSystemService(NotificationManager.class);
// registerReceiver(receiver, new IntentFilter(Intent.ACTION_MEDIA_BUTTON));
registerReceiver(receiver, new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY));
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.TIRAMISU){
registerReceiver(receiver, new IntentFilter(ACTION_PLAY_PAUSE), RECEIVER_EXPORTED);
registerReceiver(receiver, new IntentFilter(ACTION_STOP), RECEIVER_EXPORTED);
}else{
registerReceiver(receiver, new IntentFilter(ACTION_PLAY_PAUSE));
registerReceiver(receiver, new IntentFilter(ACTION_STOP));
}
instance=this;
}

View File

@@ -9,6 +9,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.util.Pair;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
@@ -709,26 +710,17 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
}
public void updateStatusWithQuote(DisplayItemsParent parent) {
int startIndex=-1;
int endIndex=-1;
for(int i=0; i<displayItems.size(); i++){
StatusDisplayItem item = displayItems.get(i);
if(item.parentID.equals(parent.getID())) {
startIndex= startIndex==-1 ? i : startIndex;
endIndex=i;
}
}
if (startIndex==-1 || endIndex==-1)
Pair<Integer, Integer> items=findAllItemsOfParent(parent);
if (items==null)
return;
// Only StatusListFragments/NotificationsListFragments can display status with quotes
assert (this instanceof StatusListFragment) || (this instanceof NotificationsListFragment);
List<StatusDisplayItem> oldItems = displayItems.subList(startIndex, endIndex+1);
List<StatusDisplayItem> oldItems = displayItems.subList(items.first, items.second+1);
List<StatusDisplayItem> newItems=this.buildDisplayItems((T) parent);
int prevSize=oldItems.size();
oldItems.clear();
displayItems.addAll(startIndex, newItems);
displayItems.addAll(items.first, newItems);
// Update the cache
final CacheController cache=AccountSessionManager.get(accountID).getCacheController();
@@ -738,8 +730,19 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
cache.updateNotification((Notification) parent);
}
adapter.notifyItemRangeRemoved(startIndex, prevSize);
adapter.notifyItemRangeInserted(startIndex, newItems.size());
adapter.notifyItemRangeRemoved(items.first, prevSize);
adapter.notifyItemRangeInserted(items.first, newItems.size());
}
public void removeStatus(DisplayItemsParent parent) {
Pair<Integer, Integer> items=findAllItemsOfParent(parent);
if (items==null)
return;
List<StatusDisplayItem> statusDisplayItems = displayItems.subList(items.first, items.second+1);
int prevSize=statusDisplayItems.size();
statusDisplayItems.clear();
adapter.notifyItemRangeRemoved(items.first, prevSize);
}
public void onVisibilityIconClick(HeaderStatusDisplayItem.Holder holder) {
@@ -815,6 +818,8 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
adapter.notifyItemChanged(text.getAbsoluteAdapterPosition());
}
List<HeaderStatusDisplayItem.Holder> headers=findAllHoldersOfType(itemID, HeaderStatusDisplayItem.Holder.class);
if (headers.isEmpty())
return;
HeaderStatusDisplayItem.Holder header=headers.size() > 1 && isForQuote ? headers.get(1) : headers.get(0);
if(header!=null) header.animateExpandToggle();
else notifyItemChanged(itemID, HeaderStatusDisplayItem.class);
@@ -943,6 +948,23 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
return null;
}
@Nullable
protected Pair<Integer, Integer> findAllItemsOfParent(DisplayItemsParent parent){
int startIndex=-1;
int endIndex=-1;
for(int i=0; i<displayItems.size(); i++){
StatusDisplayItem item = displayItems.get(i);
if(item.parentID.equals(parent.getID())) {
startIndex= startIndex==-1 ? i : startIndex;
endIndex=i;
}
}
if(startIndex==-1 || endIndex==-1)
return null;
return Pair.create(startIndex, endIndex);
}
protected <I extends StatusDisplayItem, H extends StatusDisplayItem.Holder<I>> List<H> findAllHoldersOfType(String id, Class<H> type){
ArrayList<H> holders=new ArrayList<>();
for(int i=0;i<list.getChildCount();i++){

View File

@@ -297,8 +297,8 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment<FollowR
cover.setImageDrawable(image);
}else{
item.emojiHelper.setImageDrawable(index-2, image);
name.invalidate();
bio.invalidate();
name.setText(name.getText());
bio.setText(bio.getText());
}
if(image instanceof Animatable a && !a.isRunning())
a.start();

View File

@@ -1587,8 +1587,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
public void setImage(int index, Drawable image){
CustomEmojiSpan span=index>=item.nameEmojis.length ? item.valueEmojis[index-item.nameEmojis.length] : item.nameEmojis[index];
span.setDrawable(image);
title.invalidate();
value.invalidate();
title.setText(title.getText());
value.setText(value.getText());
toolbarTitleView.setText(toolbarTitleView.getText());
}
@Override

View File

@@ -85,7 +85,7 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
@Override
protected List<StatusDisplayItem> buildDisplayItems(ScheduledStatus s) {
return StatusDisplayItem.buildItems(this, s.toStatus(), accountID, s, knownAccounts, null,
return StatusDisplayItem.buildItems(this, s.toFormattedStatus(accountID), accountID, s, knownAccounts, null,
StatusDisplayItem.FLAG_NO_EMOJI_REACTIONS |
StatusDisplayItem.FLAG_NO_FOOTER |
StatusDisplayItem.FLAG_NO_TRANSLATE);

View File

@@ -279,8 +279,8 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment<DiscoverA
cover.setImageDrawable(image);
}else{
item.emojiHelper.setImageDrawable(index-2, image);
name.invalidate();
bio.invalidate();
name.setText(name.getText());
bio.setText(bio.getText());
}
if(image instanceof Animatable a && !a.isRunning())
a.start();

View File

@@ -260,8 +260,8 @@ public class DiscoverFragment extends AppKitFragment implements ScrollableToTop,
private Fragment getFragmentForPage(int page){
return switch(page){
case 0 -> hashtagsFragment;
case 1 -> postsFragment;
case 0 -> postsFragment;
case 1 -> hashtagsFragment;
case 2 -> newsFragment;
case 3 -> accountsFragment;
default -> throw new IllegalStateException("Unexpected value: "+page);

View File

@@ -131,8 +131,7 @@ public class DiscoverTrendingLinkTimelineFragment extends StatusListFragment{
@Override
public Uri getWebUri(Uri.Builder base) {
//TODO: add URL link once web version implements a UI
return base.path("/explore/links").build();
return base.path("/links").appendPath(trendingLink.url).build();
}
@Override

View File

@@ -94,7 +94,7 @@ public class SettingsAboutAppFragment extends BaseSettingsFragment<Void> impleme
copyCrashLogItem=new ListItem<>(getString(R.string.sk_settings_copy_crash_log), lastModified, 0, this::onCopyCrashLog)
));
if(GithubSelfUpdater.needSelfUpdating()){
if(GithubSelfUpdater.needSelfUpdating() && !BuildConfig.BUILD_TYPE.equals("nightly") ){
items.add(enablePreReleasesItem=new CheckableListItem<>(R.string.sk_updater_enable_pre_releases, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.enablePreReleases, i->toggleCheckableItem(enablePreReleasesItem)));
}

View File

@@ -38,7 +38,7 @@ public class EmojiReaction {
reaction.staticUrl=info.staticUrl;
reaction.accounts=new ArrayList<>(Collections.singleton(me));
reaction.accountIds=new ArrayList<>(Collections.singleton(me.id));
reaction.request=new UrlImageLoaderRequest(info.url, V.sp(24), V.sp(24));
reaction.request=new UrlImageLoaderRequest(info.url, 0, V.sp(24));
return reaction;
}

View File

@@ -1,17 +1,27 @@
package org.joinmastodon.android.model;
import android.util.Patterns;
import androidx.annotation.NonNull;
import org.joinmastodon.android.api.ObjectValidationException;
import org.joinmastodon.android.api.RequiredField;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.Poll.Option;
import org.parceler.Parcel;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Parcel
public class ScheduledStatus extends BaseModel implements DisplayItemsParent{
private static final Pattern HIGHLIGHT_PATTER=Pattern.compile("(?<!\\w)(?:@([a-z0-9_]+)(@[a-z0-9_\\.\\-]*)?|#([^\\s.]+)|:([a-z0-9_]+))|" +Patterns.WEB_URL, Pattern.CASE_INSENSITIVE);
@RequiredField
public String id;
@RequiredField
@@ -87,7 +97,61 @@ public class ScheduledStatus extends BaseModel implements DisplayItemsParent{
s.visibility=params.visibility;
s.language=params.language;
s.sensitive=params.sensitive;
// hide media preview only if status is marked as sensitive
s.sensitiveRevealed=!params.sensitive;
if(params.poll!=null) s.poll=params.poll.toPoll();
return s;
}
/**
* Creates a fake status, which has (somewhat) correctly formatted mentions, hashtags and URLs.
*
* @param accountID the ID of the account
* @return the formatted Status object
*/
public Status toFormattedStatus(String accountID){
AccountSession self=AccountSessionManager.get(accountID);
Status s=this.toStatus();
// the mastodon api does not return formatted (html) content, only the raw content, so we modify it
s.content=s.content.replace("\n", "<br>");
if(!s.content.contains("@") && !s.content.contains("#") && !s.content.contains(":"))
return s;
StringBuffer sb=new StringBuffer();
Matcher matcher=HIGHLIGHT_PATTER.matcher(s.content);
// I'm sure this will cause problems at some point...
while(matcher.find()){
String content=matcher.group();
String href="";
// add relevant links, so on-click actions work
// hashtags are done by the parser
if(content.startsWith("@"))
href=" href=\""+formatMention(content, self.domain)+"\" class=\"u-url mention\"";
else if(content.startsWith("https://"))
href=" href=\""+content+"\"";
matcher.appendReplacement(sb, "<a"+href+">"+content+"</a>");
}
matcher.appendTail(sb);
s.content=sb.toString();
return s;
}
/**
* Converts a string mention into a URL of the account.
* @param mention Mention in the form a of user name with an optional instance URL
* @param instanceURL URL of the home instance of the user
* @return Formatted HTML or the mention
*/
@NonNull
private static String formatMention(@NonNull String mention, @NonNull String instanceURL){
String[] parts=mention.split("@");
if(parts.length>1){
String username=parts[1];
String domain=parts.length==3 ? parts[2] : instanceURL;
return "https://"+domain+"/@"+username;
}
return mention;
}
}

View File

@@ -336,6 +336,7 @@ public class TimelineDefinition {
THUNDERSTORM(R.drawable.ic_fluent_weather_thunderstorm_24_regular, R.string.sk_icon_thunderstorm),
RAIN(R.drawable.ic_fluent_weather_rain_24_regular, R.string.sk_icon_rain),
SNOWFLAKE(R.drawable.ic_fluent_weather_snowflake_24_regular, R.string.sk_icon_snowflake),
GNOME(R.drawable.ic_gnome_logo, R.string.mo_icon_gnome),
HOME(R.drawable.ic_fluent_home_24_regular, R.string.sk_timeline_home, true),
LOCAL(R.drawable.ic_fluent_people_community_24_regular, R.string.sk_timeline_local, true),

View File

@@ -1,15 +1,15 @@
package org.joinmastodon.android.model;
import org.joinmastodon.android.api.AllFieldsAreRequired;
import org.joinmastodon.android.api.RequiredField;
/**
* Represents an OAuth token used for authenticating with the API and performing actions.
*/
@AllFieldsAreRequired
public class Token extends BaseModel{
/**
* An OAuth token to be used for authorization.
*/
@RequiredField
public String accessToken;
/**
* The OAuth token type. Mastodon uses Bearer tokens.
@@ -23,5 +23,6 @@ public class Token extends BaseModel{
* When the token was generated.
* (unixtime)
*/
@RequiredField
public long createdAt;
}

View File

@@ -225,8 +225,8 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{
cover.setImageDrawable(image);
}else{
item.emojiHelper.setImageDrawable(index-2, image);
name.invalidate();
bio.invalidate();
name.setText(name.getText());
bio.setText(bio.getText());
}
if(image instanceof Animatable && !((Animatable) image).isRunning())
((Animatable) image).start();

View File

@@ -172,7 +172,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
addButton.setSelected(false);
AccountSession session=item.parentFragment.getSession();
item.status.reactions.forEach(r->r.request=r.getUrl(item.playGifs)!=null
? new UrlImageLoaderRequest(r.getUrl(item.playGifs), V.sp(24), V.sp(24))
? new UrlImageLoaderRequest(r.getUrl(item.playGifs), 0, V.sp(24))
: null);
emojiKeyboard=new CustomEmojiPopupKeyboard(
(Activity) item.parentFragment.getContext(),
@@ -342,7 +342,9 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
@Override
public void setImage(int index, Drawable drawable){
drawable.setBounds(0, 0, V.sp(24), V.sp(24));
int height=V.sp(24);
int width=drawable.getIntrinsicWidth()*height/drawable.getIntrinsicHeight();
drawable.setBounds(0, 0, width, height);
btn.setCompoundDrawablesRelative(drawable, null, null, null);
if(drawable instanceof Animatable) ((Animatable) drawable).start();
}

View File

@@ -422,7 +422,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
public void setImage(int index, Drawable drawable){
if(index>0){
item.emojiHelper.setImageDrawable(index-1, drawable);
name.invalidate();
name.setText(name.getText());
}else{
avatar.setImageDrawable(drawable);
}

View File

@@ -141,7 +141,7 @@ public class NotificationHeaderStatusDisplayItem extends StatusDisplayItem{
avatar.setImageDrawable(image);
}else{
item.emojiHelper.setImageDrawable(index-1, image);
text.invalidate();
text.setText(text.getText());
}
if(image instanceof Animatable)
((Animatable) image).start();

View File

@@ -136,7 +136,7 @@ public class PollOptionStatusDisplayItem extends StatusDisplayItem{
@Override
public void setImage(int index, Drawable image){
item.emojiHelper.setImageDrawable(index, image);
text.invalidate();
text.setText(text.getText());
if(image instanceof Animatable){
((Animatable) image).start();
}
@@ -145,7 +145,7 @@ public class PollOptionStatusDisplayItem extends StatusDisplayItem{
@Override
public void clearImage(int index){
item.emojiHelper.setImageDrawable(index, null);
text.invalidate();
text.setText(text.getText());
}
private void onButtonClick(View v){

View File

@@ -152,8 +152,8 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
int firstHelperCount=item.emojiHelper.getImageCount();
CustomEmojiHelper helper=index<firstHelperCount ? item.emojiHelper : item.extra.emojiHelper;
helper.setImageDrawable(firstHelperCount>0 ? index%firstHelperCount : index, image);
text.invalidate();
extraText.invalidate();
text.setText(text.getText());
extraText.setText(extraText.getText());
}
@Override

View File

@@ -114,7 +114,7 @@ public class SpoilerStatusDisplayItem extends StatusDisplayItem{
@Override
public void setImage(int index, Drawable image){
item.emojiHelper.setImageDrawable(index, image);
title.invalidate();
title.setText(title.getText());
}
@Override

View File

@@ -17,8 +17,10 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships;
import org.joinmastodon.android.api.requests.search.GetSearchResults;
import org.joinmastodon.android.api.session.AccountLocalPreferences;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.fragments.BaseStatusListFragment;
import org.joinmastodon.android.fragments.HashtagTimelineFragment;
@@ -35,6 +37,7 @@ import org.joinmastodon.android.model.FilterResult;
import org.joinmastodon.android.model.LegacyFilter;
import org.joinmastodon.android.model.Notification;
import org.joinmastodon.android.model.Poll;
import org.joinmastodon.android.model.Relationship;
import org.joinmastodon.android.model.ScheduledStatus;
import org.joinmastodon.android.model.SearchResults;
import org.joinmastodon.android.model.Status;
@@ -87,7 +90,7 @@ public abstract class StatusDisplayItem{
private final static Pattern QUOTE_MENTION_PATTERN=Pattern.compile("(?:<p>)?\\s?(?:RE:\\s?(<br\\s?\\/?>)?)?<a href=\"https:\\/\\/[^\"]+\"[^>]*><span class=\"invisible\">https:\\/\\/<\\/span><span class=\"ellipsis\">[^<]+<\\/span><span class=\"invisible\">[^<]+<\\/span><\\/a>(?:<\\/p>)?$");
private final static Pattern QUOTE_PATTERN=Pattern.compile("[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$");
private final static Pattern QUOTE_PATTERN=Pattern.compile("https://[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,8}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$");
public void setAncestryInfo(
boolean hasDescendantNeighbor,
@@ -338,8 +341,8 @@ public abstract class StatusDisplayItem{
if(!statusForContent.mediaAttachments.isEmpty() && statusForContent.poll==null) // add spacing if immediately preceded by attachment
contentItems.add(new DummyStatusDisplayItem(parentID, fragment));
contentItems.addAll(buildItems(fragment, statusForContent.quote, accountID, parentObject, knownAccounts, filterContext, FLAG_NO_FOOTER|FLAG_INSET|FLAG_NO_EMOJI_REACTIONS|FLAG_IS_FOR_QUOTE));
} else if((flags & FLAG_INSET)==0){
tryAddNonOfficialQuote(statusForContent, fragment, accountID);
} else if((flags & FLAG_INSET)==0 && statusForContent.mediaAttachments.isEmpty()){
tryAddNonOfficialQuote(statusForContent, fragment, accountID, filterContext);
}
if(contentItems!=items && statusForContent.spoilerRevealed){
items.addAll(contentItems);
@@ -421,21 +424,47 @@ public abstract class StatusDisplayItem{
* Tries to adds a non-official quote to a status.
* A non-official quote is a quote on an instance that does not support quotes officially.
*/
private static void tryAddNonOfficialQuote(Status status, BaseStatusListFragment fragment, String accountID) {
private static void tryAddNonOfficialQuote(Status status, BaseStatusListFragment fragment, String accountID, FilterContext filterContext) {
Matcher matcher=QUOTE_PATTERN.matcher(status.getStrippedText());
if(!matcher.find())
return;
String quoteURL="https://"+matcher.group();
String quoteURL=matcher.group();
if (!UiUtils.looksLikeFediverseUrl(quoteURL))
return;
if (UiUtils.looksLikeFediverseUrl(quoteURL)) {
new GetSearchResults(quoteURL, GetSearchResults.Type.STATUSES, true, null, 0, 0).setCallback(new Callback<>(){
@Override
public void onSuccess(SearchResults results){
if (!results.statuses.isEmpty()){
AccountSessionManager.get(accountID).filterStatuses(results.statuses, filterContext);
if (results.statuses == null || results.statuses.isEmpty())
return;
Status quote=results.statuses.get(0);
new GetAccountRelationships(Collections.singletonList(quote.account.id))
.setCallback(new Callback<>(){
@Override
public void onSuccess(List<Relationship> relationships){
if(relationships.isEmpty())
return;
Relationship relationship=relationships.get(0);
String selfId=AccountSessionManager.get(accountID).self.id;
if(!status.account.id.equals(selfId) && (relationship.domainBlocking || relationship.muting || relationship.blocking)) {
// do not show posts that are quoting a muted/blocked user
fragment.removeStatus(status);
return;
}
status.quote=results.statuses.get(0);
fragment.updateStatusWithQuote(status);
}
@Override
public void onError(ErrorResponse error){}
})
.exec(accountID);
}
@Override
@@ -444,7 +473,6 @@ public abstract class StatusDisplayItem{
}
}).exec(accountID);
}
}
public enum Type{
HEADER,

View File

@@ -173,7 +173,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
@Override
public void setImage(int index, Drawable image){
getEmojiHelper().setImageDrawable(index, image);
text.invalidate();
text.setText(text.getText());
if(image instanceof Animatable){
((Animatable) image).start();
if(image instanceof MovieDrawable)
@@ -184,7 +184,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
@Override
public void clearImage(int index){
getEmojiHelper().setImageDrawable(index, null);
text.invalidate();
text.setText(text.getText());
}
private CustomEmojiHelper getEmojiHelper(){

View File

@@ -24,7 +24,8 @@ public class CustomEmojiSpan extends ReplacementSpan{
@Override
public int getSize(@NonNull Paint paint, CharSequence text, int start, int end, @Nullable Paint.FontMetricsInt fm){
return Math.round(paint.descent()-paint.ascent());
int size = Math.round(paint.descent()-paint.ascent());
return drawable!=null ? (int) (drawable.getIntrinsicWidth()*(size/(float) drawable.getIntrinsicHeight())) : size;
}
@Override
@@ -45,7 +46,8 @@ public class CustomEmojiSpan extends ReplacementSpan{
}
canvas.save();
canvas.translate(x, top);
canvas.scale(size/(float)dw, size/(float)dh, 0f, 0f);
float scale = size/(float)dh;
canvas.scale(scale, scale, 0f, 0f);
drawable.draw(canvas);
canvas.restore();
}
@@ -56,7 +58,6 @@ public class CustomEmojiSpan extends ReplacementSpan{
}
public UrlImageLoaderRequest createImageLoaderRequest(){
int size=V.dp(20);
return new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? emoji.url : emoji.staticUrl, size, size);
return new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? emoji.url : emoji.staticUrl, 0, V.dp(20));
}
}

View File

@@ -417,7 +417,6 @@ public class UiUtils {
CustomEmojiSpan[] spans = text.getSpans(0, text.length(), CustomEmojiSpan.class);
if (spans.length == 0)
return;
int emojiSize = V.dp(20);
Map<Emoji, List<CustomEmojiSpan>> spansByEmoji = Arrays.stream(spans).collect(Collectors.groupingBy(s -> s.emoji));
for (Map.Entry<Emoji, List<CustomEmojiSpan>> emoji : spansByEmoji.entrySet()) {
ViewImageLoader.load(new ViewImageLoader.Target() {
@@ -428,14 +427,14 @@ public class UiUtils {
for (CustomEmojiSpan span : emoji.getValue()) {
span.setDrawable(d);
}
view.invalidate();
view.setText(view.getText());
}
@Override
public View getView() {
return view;
}
}, null, new UrlImageLoaderRequest(emoji.getKey().url, emojiSize, emojiSize), null, false, true);
}, null, new UrlImageLoaderRequest(emoji.getKey().url, 0, V.dp(20)), null, false, true);
}
}

View File

@@ -185,8 +185,8 @@ public class AccountViewHolder extends BindableViewHolder<AccountViewModel> impl
avatar.setImageDrawable(image);
}else{
item.emojiHelper.setImageDrawable(index-1, image);
name.invalidate();
bio.invalidate();
name.setText(name.getText());
bio.setText(bio.getText());
}
if(image instanceof Animatable a && !a.isRunning())

View File

@@ -64,7 +64,7 @@ public class Tracking{
@NonNull
public static String removeTrackingParameters(@NonNull String url){
Uri uri=Uri.parse(url);
if(uri==null)
if(uri==null || !uri.isHierarchical())
return url;
Uri.Builder uriBuilder=uri.buildUpon().clearQuery();

View File

@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M17.75,2.007a2.25,2.25 0,0 1,2.245 2.096l0.005,0.154v15.498A2.25,2.25 0,0 1,17.904 22l-0.154,0.005H6.25a2.25,2.25 0,0 1,-2.245 -2.096L4,19.755V4.257a2.25,2.25 0,0 1,2.096 -2.245l0.154,-0.005h11.5ZM7.75,7a0.75,0.75 0,1 0,0 1.5h8.5a0.75,0.75 0,0 0,0 -1.5h-8.5ZM7,11.75c0,0.414 0.336,0.75 0.75,0.75h8.5a0.75,0.75 0,0 0,0 -1.5h-8.5a0.75,0.75 0,0 0,-0.75 0.75ZM7.75,15a0.75,0.75 0,1 0,0 1.5h8.5a0.75,0.75 0,0 0,0 -1.5h-8.5Z"
android:fillColor="#212121"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="103.97" android:viewportWidth="85.6" android:width="19.759546dp">
<path android:fillColor="@color/fluent_default_icon_tint" android:pathData="m74.46,0c-11.52,0 -18.66,8.37 -20.99,16.54 -1.17,4.08 -1.28,8.19 -0.1,11.64 1.18,3.45 4.25,6.36 8.26,6.36 4,0 7.83,-2.21 11.44,-5.17 3.61,-2.95 6.93,-6.79 9.28,-10.75 2.35,-3.96 3.91,-8.07 2.96,-12.02 -0.48,-1.97 -1.78,-3.83 -3.68,-4.96 -1.91,-1.13 -4.29,-1.63 -7.17,-1.63zM40.1,4c-2.84,0.56 -5.36,2.67 -6.65,5.04 -1.48,2.71 -1.87,5.83 -1.68,8.83 0.19,3 0.98,5.9 2.28,8.28 1.29,2.38 3.22,4.58 6.17,4.76 1.58,0.1 2.97,-0.57 4.03,-1.41 1.06,-0.84 1.92,-1.9 2.67,-3.11 1.52,-2.4 2.64,-5.4 3.26,-8.47 0.62,-3.08 0.76,-6.22 -0.2,-9.03 -0.96,-2.81 -4,-5.3 -7.22,-5.3h-0c-1.04,0.07 -1.77,0.19 -2.65,0.42zM74.46,5.29c2.25,0 3.68,0.42 4.46,0.88 0.78,0.47 1.06,0.89 1.24,1.66 0.37,1.53 -0.39,4.73 -2.37,8.08 -1.98,3.35 -4.99,6.82 -8.08,9.35 -2.76,2.26 -5.64,3.65 -7.48,3.92 -0.22,0.03 -0.42,0.05 -0.6,0.05 -1.77,0 -2.55,-0.75 -3.25,-2.78 -0.7,-2.04 -0.74,-5.24 0.18,-8.46 1.84,-6.45 6.89,-12.7 15.9,-12.7zM42.74,8.87c1.55,0 1.76,0.34 2.24,1.72 0.47,1.38 0.51,3.81 0.02,6.28 -0.49,2.47 -1.48,5 -2.55,6.69 -0.53,0.84 -1.09,1.47 -1.48,1.78 -0.39,0.31 -0.52,0.27 -0.42,0.28 -0.12,-0.01 -1.01,-0.46 -1.85,-2 -0.84,-1.54 -1.5,-3.83 -1.64,-6.09 -0.15,-2.26 0.23,-4.46 1.04,-5.95 0.81,-1.49 1.85,-2.38 3.97,-2.66 0.26,-0.03 0.48,-0.05 0.68,-0.05zM22.67,11.53c-0.99,0.02 -1.98,0.25 -2.95,0.66 -3.04,1.25 -4.97,3.81 -5.62,6.49 -0.65,2.68 -0.26,5.43 0.59,7.93 0.85,2.5 2.17,4.78 3.82,6.51 1.65,1.74 3.85,3.23 6.54,2.69 2.76,-0.56 3.98,-2.91 4.74,-5.16 0.76,-2.25 1.07,-4.85 0.98,-7.46 -0.08,-2.61 -0.54,-5.22 -1.7,-7.46 -1.16,-2.24 -3.49,-4.26 -6.4,-4.2zM22.79,16.82c0.69,-0.02 0.98,0.18 1.59,1.34 0.6,1.16 1.04,3.15 1.11,5.19 0.06,2.04 -0.23,4.17 -0.71,5.61 -0.48,1.44 -1.14,1.73 -0.78,1.66h-0v0c0.09,-0.02 -0.65,-0.1 -1.64,-1.15 -1,-1.05 -2.04,-2.77 -2.65,-4.57 -0.61,-1.8 -0.78,-3.65 -0.46,-4.98 0.32,-1.33 0.89,-2.18 2.49,-2.85 0.48,-0.2 0.82,-0.25 1.05,-0.26zM8.02,23.93c-1.45,-0.05 -2.92,0.46 -4.2,1.35 -2.49,1.72 -3.76,4.44 -3.82,6.99 -0.06,2.55 0.82,4.93 2.06,7 1.24,2.07 2.86,3.84 4.68,5.08 1.82,1.24 4.13,2.19 6.52,1.14 2.34,-1.03 3.02,-3.29 3.3,-5.32 0.28,-2.03 0.12,-4.26 -0.35,-6.46 -0.47,-2.2 -1.26,-4.37 -2.49,-6.19 -1.23,-1.82 -3.14,-3.5 -5.69,-3.58zM7.85,29.22c0.28,0.01 0.79,0.24 1.48,1.26 0.69,1.02 1.34,2.66 1.7,4.34 0.36,1.69 0.45,3.44 0.29,4.63 -0.16,1.13 -0.54,1.34 -0.2,1.19 0.19,-0.09 -0.37,0.03 -1.4,-0.67 -1.04,-0.7 -2.26,-1.99 -3.12,-3.43 -0.86,-1.43 -1.34,-2.99 -1.31,-4.15 0.03,-1.16 0.31,-1.92 1.54,-2.77 0.58,-0.4 0.86,-0.42 1.02,-0.42zM50.43,33.42c-8.43,-0.14 -18.01,1.86 -26.16,6.06 -8.15,4.21 -15,10.78 -17.01,19.79 -2.21,9.88 2.23,20.9 9.71,29.56 7.47,8.66 18.2,15.14 29.59,15.14 11.79,0 24.28,-9.92 26.76,-23.02v-0c0.3,-1.6 0.09,-3.25 -0.67,-4.57 -0.76,-1.32 -1.94,-2.22 -3.18,-2.8 -2.48,-1.16 -5.34,-1.3 -8.18,-1.01 -2.84,0.29 -5.66,1.05 -7.96,2.31 -1.15,0.63 -2.2,1.38 -3.03,2.42 -0.83,1.04 -1.41,2.53 -1.21,4.06 0.36,2.73 -0.54,4.08 -1.64,4.68 -1.1,0.6 -2.9,0.67 -5.28,-1.14 -2.11,-1.61 -2.94,-2.91 -3.16,-3.72 -0.22,-0.82 -0.11,-1.43 0.61,-2.51 1.44,-2.17 5.65,-5.13 10.54,-8.16 4.88,-3.02 10.41,-6.27 14.7,-10.25 4.29,-3.98 7.5,-9.12 6.48,-15.17 -0.68,-4.07 -3.67,-7.1 -7.43,-8.92 -3.76,-1.82 -8.41,-2.66 -13.47,-2.74zM50.34,38.71c4.5,0.08 8.5,0.88 11.26,2.22 2.76,1.33 4.16,2.94 4.51,5.03 0.65,3.84 -1.21,7.02 -4.86,10.41 -3.65,3.39 -8.94,6.56 -13.88,9.63 -4.95,3.06 -9.59,5.86 -12.16,9.73 -1.29,1.93 -1.97,4.42 -1.31,6.84 0.67,2.43 2.42,4.52 5.06,6.53 3.59,2.73 7.82,3.34 11.04,1.57 3.22,-1.77 4.9,-5.68 4.34,-10.01 0.01,0.06 -0.08,0.15 0.11,-0.09 0.19,-0.24 0.68,-0.67 1.41,-1.06 1.45,-0.79 3.75,-1.47 5.96,-1.69 2.21,-0.23 4.36,0.05 5.4,0.54 0.52,0.24 0.74,0.48 0.83,0.64 0.09,0.16 0.18,0.34 0.06,0.97 -1.93,10.22 -12.95,18.71 -21.56,18.71 -9.34,0 -18.91,-5.57 -25.58,-13.3 -6.67,-7.73 -10.22,-17.45 -8.54,-24.95 1.57,-7.04 7.03,-12.5 14.27,-16.24 7.24,-3.74 16.14,-5.6 23.64,-5.47z"/>
</vector>

View File

@@ -2,7 +2,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/open_link"
android:icon="@drawable/ic_fluent_document_one_page_24_filled"
android:icon="@drawable/ic_fluent_open_24_regular"
android:showAsAction="always"
android:title="@string/mo_trending_link_read"/>
</menu>

View File

@@ -53,7 +53,7 @@
<string name="mo_swap_bookmark_with_reblog">Εναλλαγή σελιδοδείκτη με ενέργεια αναδημοσίευσης</string>
<string name="mo_show_media_preview">Εμφάνιση προεπισκόπησης πολυμέσων στις ροές</string>
<string name="mo_settings_unifiedpush_warning">UnifiedPush μη ενεργό</string>
<string name="mo_mention_reblogger_automatically">Αυτόματη αναφορά λογαριασμού που αναδημοσίευσε την ανάρτηση, στις απαντήσεις</string>
<string name="mo_mention_reblogger_automatically">Αυτόματη επισήμανση λογαριασμού που αναδημοσίευσε την ανάρτηση, στις απαντήσεις</string>
<string name="mo_confirm_unfollow_title">Άρση ακολούθησης Λογαριασμού</string>
<string name="mo_settings_unifiedpush_warning_no_distributors">Δεν έχουν εγκατασταθεί διανομείς UnifiedPush. Δεν θα λάβεις ειδοποιήσεις.</string>
<string name="mo_mute_notifications">Απόκρυψη ειδοποιήσεων από αυτόν τον χρήστη;</string>

View File

@@ -249,7 +249,7 @@
<string name="sk_add_timeline_tag_error_empty">Η ετικέτα δε μπορεί να είναι κενή</string>
<string name="sk_updater_enable_pre_releases">Ενεργοποίηση προ-κυκολοφορίας</string>
<string name="sk_inline_local_only">Μόνο τοπικά</string>
<string name="sk_inline_direct">Μόνο με αναφορά</string>
<string name="sk_inline_direct">Μόνο με επισήμανση</string>
<string name="sk_separator">·</string>
<string name="sk_local_only">Μόνο τοπική οντότητα</string>
<string name="sk_instance_features">Δυνατότητες οντότητας</string>
@@ -374,7 +374,7 @@
<string name="sk_duration_hours_6">6 ώρες</string>
<string name="sk_duration_days_1">1 ημέρα</string>
<string name="sk_duration_days_3">3 ημέρες</string>
<string name="sk_notification_mention">Αναφέρθηκες από τον χρήστη %s</string>
<string name="sk_notification_mention">Επισημάνθηκες από τον χρήστη %s</string>
<string name="sk_suicide_search_terms">Αυτοκτονία</string>
<string name="sk_search_suicide_title">Σε περίπτωση που είσαι σε κρίση…</string>
<string name="sk_search_suicide_hotlines">Βρες γραμμή βοήθειας</string>

View File

@@ -16,7 +16,7 @@
<string name="sk_image_description">Descripción de la imagen</string>
<string name="sk_visibility_unlisted">No listada</string>
<string name="sk_settings_show_replies">Mostrar respuestas</string>
<string name="sk_settings_show_boosts">Mostrar boosts</string>
<string name="sk_settings_show_boosts">Mostrar mejoras</string>
<string name="sk_settings_load_new_posts">Cargar publicaciones nuevas automáticamente</string>
<string name="sk_settings_show_interaction_counts">Mostrar recuento de interacciones</string>
<string name="sk_mark_media_as_sensitive">Marcar contenido como delicado</string>

View File

@@ -1,95 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mo_hide_compose_button_while_scrolling_setting">Verberg knop \"Nieuw bericht\" tijdens scrollen</string>
<string name="mo_personal_note">Voeg een notitie toe over dit profiel</string>
<string name="mo_personal_note_confirm">Bevestig de wijzigingen aan de notitie</string>
<string name="mo_personal_note_update_failed">Notitie bewaren mislukt</string>
<string name="mo_personal_note">Voeg een opmerking toe over dit account</string>
<string name="mo_personal_note_confirm">Bevestig de wijzigingen van de opmerking</string>
<string name="mo_personal_note_update_failed">Bewaren van opmerking mislukt</string>
<string name="mo_settings_contribute">Bijdragen aan Moshidon</string>
<string name="mo_update_ready">Moshidon %s is gedownload en gereed voor installatie.</string>
<string name="mo_update_available">Moshidon %s staat gereed om te downloaden.</string>
<string name="mo_no_image_desc_title">Geen beschrijving bij afbeelding</string>
<string name="mo_emoji_recent">Recent gebruikt</string>
<string name="mo_poll_option_add">Voeg een nieuwe peiling optie toe</string>
<string name="mo_poll_option_add">Voeg een nieuwe peilingkeuze toe</string>
<string name="mo_sending_error">Fout bij plaatsen bericht</string>
<string name="mo_disable_dividers">Berichten scheidingslijn uitschakelen</string>
<string name="mo_relocate_publish_button">Knop voor opstellen bericht verplaatsen</string>
<string name="mo_welcome_text">Om te beginnen vul je hieronder de domeinnaam in van de instance (server).</string>
<string name="mo_clear_recent_emoji">Wis recent gebruikte emoji</string>
<string name="mo_no_image_desc">De bijgesloten afbeeldingen hebben geen omschrijving. Overweeg deze alsnog toe te voegen, zodat ook mensen met een visuele handicap kunnen deelnemen.</string>
<string name="mo_share_open_url">Open in app</string>
<string name="mo_disable_reminder_to_add_alt_text">Herinnering uitschakelen om alt tekst toe te voegen</string>
<string name="mo_welcome_text">Om te beginnen vul je hieronder de domeinnaam in van de server (instance).</string>
<string name="mo_clear_recent_emoji">Recent gebruikte emoji\'s wissen</string>
<string name="mo_no_image_desc">De bijgesloten afbeeldingen hebben geen omschrijving. Overweeg deze alsnog toe te voegen, zodat ook blinde of slechtziende mensen kunnen deelnemen.</string>
<string name="mo_share_open_url">In een andere app openen</string>
<string name="mo_disable_reminder_to_add_alt_text">Herinnering uitschakelen om alt-tekst toe te voegen</string>
<string name="mo_filtered">Filter: %s</string>
<string name="mo_mute_label">Duur:</string>
<string name="mo_duration_minutes_30">30 minuten</string>
<string name="mo_duration_minutes_5">5 minuten</string>
<string name="mo_duration_indefinite">Onbepaald</string>
<string name="mo_duration_indefinite">Voor onbepaalde tijd</string>
<string name="mo_duration_days_3">3 dagen</string>
<string name="mo_duration_days_1">1 dag</string>
<string name="mo_duration_hours_6">6 uur</string>
<string name="mo_duration_hours_1">1 uur</string>
<string name="mo_duration_days_7">7 dagen</string>
<string name="mo_miscellaneous_settings">Diverse instellingen</string>
<string name="mo_swap_bookmark_with_reblog">Gebruik reblog in plaats van bookmark</string>
<string name="mo_swap_bookmark_with_reblog">Gebruik boost in plaats van bookmark</string>
<string name="mo_notification_action_replied">Succesvol gereageerd op het bericht door %s</string>
<string name="mo_load_remote_followers">Volgers en gevolgde accounts van het profiel op afstand laden</string>
<string name="mo_download_latest_nightly_release">Download nieuwste nightly versie</string>
<string name="mo_disable_double_tap_to_swipe_between_tabs">Uitschakelen dubbele tik om te vegen tussen tabs</string>
<string name="mo_fab_compose">Samenstellen</string>
<string name="mo_change_default_reply_visibility_to_unlisted">Reageer standaard met zichtbaarheid \"unlisted\"</string>
<string name="mo_fab_compose">Bericht opstellen</string>
<string name="mo_change_default_reply_visibility_to_unlisted">Standaard met zichtbaarheid \'minder openbaar\' reageren</string>
<string name="mo_color_palette_nord">Nord</string>
<string name="mo_add_custom_server_local_timeline">Toevoegen lokale tijdlijn van een aangepaste server</string>
<string name="mo_confirm_unfollow_title">Ontvolg account</string>
<string name="mo_notification_management_settings">Beheer meldingen</string>
<string name="mo_setting_true_black_summary">Kan batterij besparen bij AMOLED scherm</string>
<string name="mo_add_custom_server_local_timeline">Lokale tijdlijn van een andere server toevoegen</string>
<string name="mo_confirm_unfollow_title">Account ontvolgen</string>
<string name="mo_notification_management_settings">Meldingen beheren</string>
<string name="mo_setting_true_black_summary">Kan batterijverbruik van AMOLED-apparaten beperken</string>
<string name="mo_confirm_unfollow">Bevestig ontvolgen van %s</string>
<string name="mo_setting_play_gif_summary">Autoplay GIFs in avatars en emoji</string>
<string name="mo_double_tap_to_swipe_between_tabs">Dubbeltikken om te swipen tussen tabs</string>
<string name="mo_enable_dividers">Toon lijnen tussen berichten</string>
<string name="mo_setting_play_gif_summary">GIF\'s in profielfoto\'s en emoji\'s automatisch afspelen</string>
<string name="mo_double_tap_to_swipe_between_tabs">Dubbeltik om tussen tabs te schakelen</string>
<string name="mo_enable_dividers">Lijnen tussen berichten weergeven</string>
<string name="mo_notification_audience_settings">Doelgroep van meldingen</string>
<string name="mo_setting_uniform_summary">Gebruik het icon van de app voor alle meldingen</string>
<string name="mo_swap_bookmark_with_reblog_summary">Bookmark of reblog vanuit de melding</string>
<string name="mo_setting_uniform_summary">App-pictogram voor alle meldingen gebruiken</string>
<string name="mo_swap_bookmark_with_reblog_summary">Bladwijzer aanmaken of boosten vanuit de melding</string>
<string name="mo_instance_registration">Registratie</string>
<string name="mo_instance_status">Status</string>
<string name="mo_instance_users">Gebruikers</string>
<string name="mo_instance_contact">Contact</string>
<string name="mo_severity_silence">Genegeerd</string>
<string name="mo_severity_silence">Beperkt</string>
<string name="mo_instance_info_moderated_servers">Gemodereerde servers</string>
<string name="mo_instance_info_open_timeline">Lokale tijdlijn</string>
<string name="mo_instance_registration_approval">Toestemming vereist</string>
<string name="mo_instance_registration_open">Open</string>
<string name="mo_instance_admin">Beheerd door</string>
<string name="mo_open_camera">Maak foto</string>
<string name="mo_severity_suspend">Geblokkeerd</string>
<string name="mo_setting_remote_follower_summary">Toon volgers van andere instances</string>
<string name="mo_setting_reduced_motion_summary">Uitschakelen animatie bij interacties</string>
<string name="mo_setting_interaction_count_summary">Toon hoeveel mensen interactie hebben met een bericht op de tijdlijn</string>
<string name="mo_setting_default_reply_privacy_summary">Reacties worden dan niet meegenomen in de discovery features</string>
<string name="mo_open_camera">Foto maken</string>
<string name="mo_severity_suspend">Opgeschort</string>
<string name="mo_setting_remote_follower_summary">Toon volgers van andere servers</string>
<string name="mo_setting_reduced_motion_summary">Animaties bij interacties uitschakelen</string>
<string name="mo_setting_interaction_count_summary">Hoeveel mensen interactie met een bericht op de tijdlijn hebben weergeven</string>
<string name="mo_setting_default_reply_privacy_summary">Reacties worden niet onder verkennen weergeven</string>
<string name="mo_setting_relocate_publish_summary">Knop voor opstellen bericht naar de onderste balk verplaatsen</string>
<string name="mo_setting_disable_swipe_summary">Niet naar andere tijdlijnen kunnen swipen</string>
<string name="mo_setting_disable_swipe_summary">Naar andere tijdlijnen kunnen vegen</string>
<string name="mo_setting_marquee_summary">Schakelt de horizontaal scrollende tekst uit</string>
<string name="mo_mention_reblogger_automatically">In reacties automatisch ook het account erbij vermelden, van degene die het bericht boost</string>
<string name="mo_mention_reblogger_automatically">In reacties automatisch ook het account van degene die het bericht boostte erbij vermelden</string>
<string name="mo_color_palette_black_and_white">Zwart Wit</string>
<string name="mo_setting_haptic_feedback_summary">Tril bij interactie met berichten</string>
<string name="mo_setting_haptic_feedback_summary">Bij interactie met berichten laten trillen</string>
<string name="mo_camera_not_available">Geen camera beschikbaar!</string>
<string name="mo_repo_url">https://github.com/LucasGGamerM/moshidon</string>
<string name="mo_settings_show_posts_without_alt">Toon berichten zonder alt tekst in media</string>
<string name="mo_settings_show_posts_without_alt_summary">Berichten worden verborgen in tijdlijnen, maar kunnen zichtbaar zijn in threads en meldingen</string>
<string name="mo_settings_show_posts_without_alt">Toon mediaberichten zonder alt-tekst</string>
<string name="mo_settings_show_posts_without_alt_summary">Berichten worden op alle tijdlijnen verborgen, maar kunnen zichtbaar zijn in gesprekken en meldingen</string>
<string name="mo_donate_url">https://github.com/sponsors/LucasGGamerM</string>
<string name="mo_unmute_hashtag">Hashtag niet meer negeren</string>
<string name="mo_show_media_preview">Toon media preview in tijdlijnen</string>
<string name="mo_show_media_preview">Media-voorvertoning op tijdlijnen weergeven</string>
<string name="mo_muted_accounts">Genegeerde accounts</string>
<string name="mo_confirm_to_unmute_hashtag">Weet je zeker dat je deze hashtag niet meer wilt negeren\?</string>
<string name="mo_blocked_accounts">Geblokkeerde accounts</string>
<string name="mo_mute_hashtag">Hashtag negeren</string>
<string name="mo_confirm_to_mute_hashtag">Weet je zeker dat je deze hashtag wilt negeren\?</string>
<string name="mo_haptic_feedback">Haptische feedback</string>
<string name="mo_muted_conversation_successfully">Succesvol genegeerd gesprek</string>
<string name="mo_muted_conversation_successfully">Negeren van gesprek geslaagd</string>
<string name="mo_filter_notifications">Filter meldingen</string>
<string name="mo_double_tap_to_search">Dubbeltik om \"zoeken\" te openen</string>
<string name="mo_mute_conversation">Negeer gesprek</string>
<string name="mo_double_tap_to_search">Dubbeltik om te zoeken</string>
<string name="mo_mute_conversation">Gesprek negeren</string>
<string name="mo_unmute_conversation">Gesprek niet meer negeren</string>
<string name="mo_confirm_to_mute_conversation">Weet je zeker dat je dit gesprek wilt negeren?</string>
<string name="mo_mute_notifications">Verberg meldingen van dit account?</string>
<string name="mo_mute_notifications">Meldingen van dit account verbergen?</string>
<string name="mo_confirm_to_unmute_conversation">Weet je zeker dat je dit gesprek niet meer wilt negeren?</string>
<string name="mo_instance_view_info">Bekijk serverinformatie</string>
<string name="mo_settings_remove_tracking_params_summary">Websitetracking uit links verwijderen</string>

View File

@@ -2,15 +2,15 @@
<resources>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Vastgemaakt</string>
<string name="sk_delete_and_redraft">Verwijderen en opnieuw opstellen</string>
<string name="sk_confirm_delete_and_redraft_title">Verwijder en stel bericht opnieuw op</string>
<string name="sk_delete_and_redraft">Verwijderen en herschrijven</string>
<string name="sk_confirm_delete_and_redraft_title">Bericht verwijderen en herschrijven</string>
<string name="sk_confirm_delete_and_redraft">Weet je zeker dat je dit bericht wilt verwijderen en opnieuw wilt opstellen\?</string>
<string name="sk_pin_post">Vastmaken aan profiel</string>
<string name="sk_confirm_pin_post_title">Bericht vastmaken aan profiel</string>
<string name="sk_confirm_pin_post">Wil je dit bericht vastmaken aan je profiel\?</string>
<string name="sk_pin_post">Aan profielpagina vastmaken</string>
<string name="sk_confirm_pin_post_title">Aan profielpagina vastmaken</string>
<string name="sk_confirm_pin_post">Wil je dit bericht aan je profielpagina vastmaken?</string>
<string name="sk_pinning">Bericht vastmaken…</string>
<string name="sk_unpin_post">Losmaken van profiel</string>
<string name="sk_confirm_unpin_post_title">Bericht losmaken van profiel</string>
<string name="sk_unpin_post">Van profielpagina losmaken</string>
<string name="sk_confirm_unpin_post_title">Van profielpagina losmaken</string>
<string name="sk_confirm_unpin_post">Weet je zeker dat je dit bericht wilt losmaken\?</string>
<string name="sk_unpinning">Bericht losmaken…</string>
<string name="sk_follow_requests">Volgverzoeken</string>
@@ -24,11 +24,11 @@
<string name="sk_mark_media_as_sensitive">Markeer media als gevoelig</string>
<string name="sk_user_post_notifications_on">Berichtmeldingen aangezet voor %s</string>
<string name="sk_user_post_notifications_off">Berichtmeldingen uitgezet voor %s</string>
<string name="sk_federated_timeline">Federatie</string>
<string name="sk_federated_timeline_info_banner">Dit zijn de meest recente berichten van de mensen in jouw federatie.</string>
<string name="sk_federated_timeline">Globaal</string>
<string name="sk_federated_timeline_info_banner">Dit zijn de meest recente berichten van mensen in het voor jou zichtbare deel van de fediverse.</string>
<string name="sk_update_available">Moshidon %s is klaar om te downloaden.</string>
<string name="sk_update_ready">Moshidon %s is gedownload en klaar om te installeren.</string>
<string name="sk_check_for_update">Controleren op update</string>
<string name="sk_check_for_update">Op update controleren</string>
<string name="sk_no_update_available">Geen update beschikbaar</string>
<string name="sk_list_timelines">Lijsten</string>
<string name="sk_reject_follow_request">Volgverzoek afwijzen</string>
@@ -37,27 +37,27 @@
<string name="sk_settings_always_reveal_content_warnings">Onthul altijd inhoudswaarschuwingen</string>
<string name="sk_settings_enable_marquee">Schakel scrollende tekst in titelbalken uit</string>
<string name="sk_settings_contribute">Bijdragen aan Megalodon</string>
<string name="sk_settings_show_federated_timeline">Toon gefedereerde tijdlijn</string>
<string name="sk_settings_show_federated_timeline">Globale tijdlijn bekijken</string>
<string name="sk_notification_type_status">Berichten</string>
<string name="sk_notification_type_posts">Een bericht publiceert</string>
<string name="sk_notify_posts">Een bericht publiceert</string>
<string name="sk_timeline_local">Lokaal</string>
<string name="sk_timeline_home">Home</string>
<string name="sk_timeline_federated">Federatie</string>
<string name="sk_translate_post">Vertaal</string>
<string name="sk_timeline_federated">Globaal</string>
<string name="sk_translate_post">Vertalen</string>
<string name="sk_clear_recent_languages">Wis recent gebruikte talen</string>
<string name="sk_welcome_text">De haai groet je! Graag je instance naam (Mastodon server) hieronder invullen om te beginnen.</string>
<string name="sk_welcome_text">De haai groet je! Graag je servernaam (instance) hieronder invullen om te beginnen.</string>
<string name="sk_welcome_title">Welkom!</string>
<string name="sk_translated_using">Vertaald met %s</string>
<string name="sk_post_language">Taal: %s</string>
<string name="sk_bookmarked_as">Bookmark opgeslagen als %s</string>
<string name="sk_already_bookmarked">Al als bookmark opgeslagen</string>
<string name="sk_bookmarked_as">Bladwijzer opgeslagen als %s</string>
<string name="sk_already_bookmarked">Al als bladwijzer opgeslagen</string>
<string name="sk_favorited_as">Als favoriet opgeslagen als %s</string>
<string name="sk_language_name">%1$s (%2$s)</string>
<string name="sk_example_domain">example.social</string>
<string name="sk_reply_as">Antwoord met ander account</string>
<string name="sk_settings_uniform_icon_for_notifications">Zelfde icoon voor alle meldingen</string>
<string name="sk_settings_tabs_disable_swipe">Swipen tussen tabs uitschakelen</string>
<string name="sk_settings_uniform_icon_for_notifications">Hetzelfde pictogram voor alle meldingen</string>
<string name="sk_settings_tabs_disable_swipe">Vegen tussen tabs uitschakelen</string>
<string name="sk_settings_profile">Profiel instellen</string>
<string name="sk_settings_posting">Berichtvoorkeuren</string>
<string name="sk_settings_filters">Filters instellen</string>
@@ -74,24 +74,24 @@
<string name="sk_color_palette_brown">Bruin</string>
<string name="sk_color_palette_red">Rood</string>
<string name="sk_color_palette_yellow">Geel</string>
<string name="sk_delete_notification_confirm_action">Verwijder melding</string>
<string name="sk_delete_notification_confirm_action">Melding verwijderen</string>
<string name="sk_delete_notification_confirm">Weet je zeker dat je de melding wilt verwijderen\?</string>
<string name="sk_settings_enable_delete_notifications">Meldingen verwijderen inschakelen</string>
<string name="sk_settings_publish_button_text">Tekst op publiceerknop</string>
<string name="sk_settings_publish_button_text_title">Tekst publiceerknop aanpassen</string>
<string name="sk_settings_publish_button_text">Tekst op knop voor opstellen bericht</string>
<string name="sk_settings_publish_button_text_title">Tekst op knop voor opstellen bericht aanpassen</string>
<string name="sk_settings_translation_availability_note_available">%s ondersteunt vertaling!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s lijkt vertaling niet te ondersteunen.</string>
<string name="sk_clear_all_notifications">Wis alle meldingen</string>
<string name="sk_clear_all_notifications_confirm_action">Verwijder alles</string>
<string name="sk_clear_all_notifications">Alle meldingen verwijderen</string>
<string name="sk_clear_all_notifications_confirm_action">Alles verwijderen</string>
<string name="sk_clear_all_notifications_confirm">Weet je zeker dat je alle meldingen wilt verwijderen\?</string>
<string name="sk_loading_fediverse_resource_title">Opzoeken in de Fediverse</string>
<string name="sk_loading_fediverse_resource_title">Opzoeken in de fediverse</string>
<string name="sk_copy_link_to_post">Kopieer link naar bericht</string>
<string name="sk_loading_resource_on_instance_title">Opzoeken op %s</string>
<string name="sk_open_with_account">Open met ander account</string>
<string name="sk_unsent_posts">Niet-verzonden berichten</string>
<string name="sk_draft">Concept</string>
<string name="sk_schedule">Inplannen</string>
<string name="sk_confirm_delete_draft">Weet je zeker dat je dit concept bericht wilt verwijderen\?</string>
<string name="sk_confirm_delete_draft">Weet je zeker dat je dit conceptbericht wilt verwijderen?</string>
<string name="sk_confirm_delete_scheduled_post_title">Verwijder ingepland bericht</string>
<string name="sk_draft_or_schedule">Concept of ingepland</string>
<string name="sk_compose_draft">Bericht wordt als concept bewaard.</string>
@@ -106,26 +106,26 @@
<string name="sk_settings_reduce_motion">Beweging in animaties verminderen</string>
<string name="sk_announcements">Aankondigingen</string>
<string name="sk_mark_as_read">Markeer als gelezen</string>
<string name="sk_settings_about_instance">Over instance</string>
<string name="sk_settings_about_instance">Over server</string>
<string name="sk_settings_single_notification">Toon maar één melding</string>
<string name="sk_create">Maken</string>
<string name="sk_create_list_title">Maak lijst</string>
<string name="sk_list_name_hint">Lijstnaam</string>
<string name="sk_list_replies_policy">Toon reacties aan</string>
<string name="sk_list_replies_policy_none">Niemand</string>
<string name="sk_list_replies_policy_followed">Gevolgde users</string>
<string name="sk_list_replies_policy_followed">Gevolgde gebruikers</string>
<string name="sk_delete_list">Verwijder lijst</string>
<string name="sk_delete_list_confirm">Weet je zeker dat je deze lijst wilt verwijderen: “%s”\?</string>
<string name="sk_edit_list_title">Bewerk lijst</string>
<string name="sk_your_lists">Je lijsten</string>
<string name="sk_translate_show_original">Toon origineel</string>
<string name="sk_translate_show_original">Origineel bekijken</string>
<string name="sk_available_languages">Beschikbare talen</string>
<string name="sk_confirm_clear_recent_languages">Weet je zeker dat je de laatst gebruikte talen wilt wissen\?</string>
<string name="sk_delete_notification">Verwijder melding</string>
<string name="sk_delete_notification">Melding verwijderen</string>
<string name="sk_settings_translate_only_opened">Vertaal alleen geopende berichten</string>
<string name="sk_hashtags_you_follow">Hashtags die je volgt</string>
<string name="sk_resource_not_found">Bron kon niet worden gevonden</string>
<string name="sk_bookmark_as">Bookmark met ander account</string>
<string name="sk_bookmark_as">Bladwijzer aanmaken met ander account</string>
<string name="sk_favorite_as">Maak favoriet met ander account</string>
<string name="sk_already_favorited">Al als favoriet opgeslagen</string>
<string name="sk_forward_report_to">Doorsturen naar %s</string>
@@ -151,10 +151,10 @@
<string name="sk_icon_star">Ster</string>
<string name="sk_timeline_posts">Berichten</string>
<string name="sk_timelines_add">Toevoegen</string>
<string name="sk_alt_text_missing_title">Ontbrekende alt tekst</string>
<string name="sk_alt_text_missing_title">Ontbrekende alt-tekst</string>
<string name="sk_alt_text_missing">Minstens één bijlage bevat geen omschrijving.</string>
<string name="sk_publish_anyway">Toch publiceren</string>
<string name="sk_settings_disable_alt_text_reminder">Alt tekst herinnering uitschakelen</string>
<string name="sk_settings_disable_alt_text_reminder">Alt-tekst herinnering uitschakelen</string>
<string name="sk_notify_posts_info_banner">Als je meldingen voor berichten van bepaalde mensen inschakelt, dan zie je hier hun nieuwe berichten.</string>
<string name="sk_icon_pi">Pi</string>
<string name="sk_icon_city">Stad</string>
@@ -162,7 +162,7 @@
<string name="sk_icon_dog">Hond</string>
<string name="sk_icon_turtle">Schildpad</string>
<string name="sk_icon_balloon">Ballon</string>
<string name="sk_icon_image">Plaatje</string>
<string name="sk_icon_image">Afbeelding</string>
<string name="sk_icon_bot">Bot</string>
<string name="sk_icon_language">Taal</string>
<string name="sk_icon_location">Locatie</string>
@@ -172,7 +172,7 @@
<string name="sk_icon_keyboard">Keyboard</string>
<string name="sk_icon_coffee">Koffie</string>
<string name="sk_icon_laugh">Lach</string>
<string name="sk_edit_timeline">Bewerk tijdlijn</string>
<string name="sk_edit_timeline">Tijdlijn bewerken</string>
<string name="sk_icon_color_palette">Kleurpalet</string>
<string name="sk_icon_tag">Label</string>
<string name="sk_icon_stethoscope">Stethoscoop</string>
@@ -199,7 +199,7 @@
<string name="sk_icon_human">Mens</string>
<string name="sk_icon_globe">Wereldbol</string>
<string name="sk_attach_file">Voeg bestand toe</string>
<string name="sk_edit_timelines">Bewerk tijdlijnen</string>
<string name="sk_edit_timelines">Tijdlijnen bewerken</string>
<string name="sk_notification_type_update">Bewerkte berichten</string>
<string name="sk_timelines">Tijdlijnen</string>
<string name="sk_timeline">Tijdlijn</string>
@@ -207,7 +207,7 @@
<string name="sk_pin_timeline">Zet tijdlijn vast</string>
<string name="sk_unpin_timeline">Maak tijdlijn los</string>
<string name="sk_remove">Verwijder</string>
<string name="sk_timeline_icon">Icoon</string>
<string name="sk_timeline_icon">Pictogram</string>
<string name="sk_icon_heart">Hart</string>
<string name="sk_icon_rabbit">Konijn</string>
<string name="sk_icon_news">Nieuws</string>
@@ -224,47 +224,47 @@
<string name="sk_searching">Zoeken…</string>
<string name="sk_no_results">Geen resultaten</string>
<string name="sk_save_draft">Concept opslaan\?</string>
<string name="sk_no_alt_text">Geen alt tekst beschikbaar</string>
<string name="sk_settings_show_alt_indicator">Indicator voor alt tekst</string>
<string name="sk_settings_show_no_alt_indicator">Indicator voor ontbrekende alt tekst</string>
<string name="sk_no_alt_text">Geen alt-tekst beschikbaar</string>
<string name="sk_settings_show_alt_indicator">Indicator voor alt-tekst</string>
<string name="sk_settings_show_no_alt_indicator">Indicator voor ontbrekende alt-tekst</string>
<string name="sk_updater_enable_pre_releases">Pre-releases inschakelen</string>
<string name="sk_save_draft_message">Wil je de wijzingen aan dit concept opslaan of dit nu publiceren\?</string>
<string name="sk_save_draft_message">Wil je de wijzigingen aan dit concept opslaan of dit nu plaatsen?</string>
<string name="sk_schedule_or_draft">Inplannen of concept</string>
<string name="sk_separator">·</string>
<string name="sk_sign_ups">Gebruikers die zich aanmelden</string>
<string name="sk_settings_see_new_posts_button">Knop \"Zie nieuwe berichten\"</string>
<string name="sk_inline_local_only">alleen-lokaal</string>
<string name="sk_local_only">Alleen lokale instance</string>
<string name="sk_local_only">Alleen lokale server</string>
<string name="sk_settings_glitch_instance">Glitch alleen-lokaal modus</string>
<string name="sk_instance_features">Instance mogelijkheden</string>
<string name="sk_instance_features">Servermogelijkheden</string>
<string name="sk_settings_support_local_only">Server ondersteunt alleen-lokaal berichten plaatsing</string>
<string name="sk_settings_server_version">Serverversie: %s</string>
<string name="sk_notify_poll_results">Peiling uitslagen publiceert</string>
<string name="sk_pinned_timeline">Vastgemaakt aan Home</string>
<string name="sk_unpinned_timeline">Losgemaakt van Home</string>
<string name="sk_notify_poll_results">Uitslagen peiling gepubliceerd</string>
<string name="sk_pinned_timeline">Aan Start vastgemaakt</string>
<string name="sk_unpinned_timeline">Van Start losgemaakt</string>
<string name="sk_expand">Uitvouwen</string>
<string name="sk_collapse">Inklappen</string>
<string name="sk_filtered">Gefilterd: %s</string>
<string name="sk_settings_collapse_long_posts">Lange berichten inklappen</string>
<string name="sk_unfinished_attachments_message">Enkele bijlagen zijn nog niet klaar met uploaden.</string>
<string name="sk_compose_no_draft">Niet opslaan als concept</string>
<string name="sk_settings_hide_interaction">Verberg interactie knoppen</string>
<string name="sk_settings_hide_interaction">Verberg interactie-knoppen</string>
<string name="sk_follow_as">Volgen met ander account</string>
<string name="sk_followed_as">Gevolgd met %s</string>
<string name="sk_quoting_user">Quoting %s</string>
<string name="sk_quoting_user">%s citeren</string>
<string name="sk_settings_reply_visibility">Zichtbaarheid reactie</string>
<string name="sk_settings_reply_visibility_all">Alle reacties</string>
<string name="sk_settings_auto_reveal_anyone">Reacties van iedereen</string>
<string name="sk_settings_auto_reveal_author">Reacties van dezelfde auteur</string>
<string name="sk_settings_auto_reveal_author">Reacties van dezelfde gebruiker</string>
<string name="sk_settings_auto_reveal_nobody">Nooit</string>
<string name="sk_settings_prefix_replies_never">Nooit</string>
<string name="sk_settings_prefix_replies_always">Als reactie op iemand</string>
<string name="sk_settings_auto_reveal_equal_spoilers">Dezelfde CW\'s automatisch tonen in reacties</string>
<string name="sk_settings_allow_remote_loading">Laad informatie van remote instances (servers)</string>
<string name="sk_no_remote_info_hint">remote info niet beschikbaar</string>
<string name="sk_settings_allow_remote_loading_explanation">Probeer meer accurate informatie te krijgen van volgers, favorieten en boosts, door informatie te laden van de originele instance (server).</string>
<string name="sk_settings_forward_report_default">Standaardinstelling \"Forward report\"</string>
<string name="sk_settings_hide_fab">Automatisch Compose knop verbergen</string>
<string name="sk_settings_allow_remote_loading">Laad informatie van externe servers (instances)</string>
<string name="sk_no_remote_info_hint">externe info niet beschikbaar</string>
<string name="sk_settings_allow_remote_loading_explanation">Probeer meer accurate informatie te krijgen van volgers, favorieten en boosts, door informatie te laden van de originele server (instance).</string>
<string name="sk_settings_forward_report_default">Standaardinstelling \"rapportage doorsturen\"</string>
<string name="sk_settings_hide_fab">Automatisch knop voor opstellen bericht verbergen</string>
<string name="sk_list_exclusive_switch">Maak lijst exclusief</string>
<string name="sk_compact_reblog_reply_line">Compacte boost/reply regel</string>
<string name="sk_reply_line_above_avatar">“In reply to” regel boven avatar</string>
@@ -276,7 +276,7 @@
<string name="sk_advanced_options_show">Toon geavanceerde opties</string>
<string name="sk_open_in_app">Open in app</string>
<string name="sk_advanced_options_hide">Verberg geavanceerde opties</string>
<string name="sk_settings_emoji_reactions">Gebruik emoji reacties</string>
<string name="sk_settings_emoji_reactions">Emoji-reacties gebruiken</string>
<plurals name="sk_users_reacted_with">
<item quantity="one">Eén persoon reageerde met %2$s</item>
<item quantity="other">%1$,d personen reageerden met %2$s</item>
@@ -298,26 +298,26 @@
<string name="sk_content_type_html">HTML</string>
<string name="sk_content_type_plain">Alleen tekst</string>
<string name="sk_content_type_unspecified">Niet gespecificeerd</string>
<string name="sk_settings_default_content_type">Standaard formaat</string>
<string name="sk_settings_default_content_type">Standaard inhoudstype</string>
<string name="sk_content_type_markdown">Markdown</string>
<string name="sk_content_type_bbcode">BBCode</string>
<string name="sk_content_type_mfm">MFM</string>
<string name="sk_tab_notifications">Meldingen</string>
<string name="sk_tab_search">Zoek</string>
<string name="sk_tab_home">Home</string>
<string name="sk_tab_search">Zoeken</string>
<string name="sk_tab_home">Start</string>
<string name="sk_external_share_or_open_title">Deel of open met account</string>
<string name="sk_instance_info_unavailable">Instance informatie tijdelijk niet beschikbaar</string>
<string name="sk_settings_show_labels_in_navigation_bar">Toon tab labels op navigatiebalk</string>
<string name="sk_instance_info_unavailable">Server-informatie tijdelijk niet beschikbaar</string>
<string name="sk_settings_show_labels_in_navigation_bar">Toon tab-labels op navigatiebalk</string>
<string name="sk_tab_profile">Profiel</string>
<plurals name="sk_posts_count_label">
<item quantity="one">bericht</item>
<item quantity="other">berichten</item>
</plurals>
<string name="sk_load_missing_posts_below">Laad oudere berichten</string>
<string name="sk_load_missing_posts_above">Laad nieuwere berichten</string>
<string name="sk_suicide_helplines_url">https://www.113.nl/</string>
<string name="sk_load_missing_posts_below">Oudere berichten laden</string>
<string name="sk_load_missing_posts_above">Nieuwere berichten laden</string>
<string name="sk_suicide_helplines_url">https://www.113.nl (Nederland), https://www.zelfmoord1813.be (Vlaanderen)</string>
<string name="sk_suicide_search_terms">Zelfmoord</string>
<string name="sk_notification_mention">Je werd genoemd door %s</string>
<string name="sk_notification_mention">%s vermeldde jou</string>
<string name="sk_time_hours">%d uren</string>
<string name="sk_time_minutes">%d minuten</string>
<string name="sk_do_not_show_again">Niet meer laten zien</string>
@@ -331,9 +331,9 @@
<string name="sk_settings_show_emoji_reactions_only_opened">Alleen als een bericht geopend is</string>
<string name="sk_add_timeline">Tijdlijn toevoegen</string>
<string name="sk_set_as_default">Instellen als standaard</string>
<string name="sk_settings_like_icon">Gebruik een hartje als icoon voor favoriet</string>
<string name="sk_settings_like_icon">Gebruik een hartje als pictogram voor favoriet</string>
<string name="sk_settings_color_palette_default">Standaard (%s)</string>
<string name="sk_settings_show_emoji_reactions">Toon emoji reacties in tijdlijnen</string>
<string name="sk_settings_show_emoji_reactions">Emoji-reacties op tijdlijnen weergeven</string>
<string name="sk_blocked_accounts">Geblokkeerde accounts</string>
<string name="sk_icon_feed">Feed</string>
<string name="sk_edit_timeline_tag_main">Berichten met hashtag…</string>
@@ -341,37 +341,37 @@
<string name="sk_settings_underlined_links">Onderstreepte links</string>
<string name="sk_settings_lock_account">Handmatig nieuwe volgers goedkeuren</string>
<string name="sk_settings_instance">Instance</string>
<string name="sk_settings_display_pronouns_in_timelines">Toon voornaamwoorden in tijdlijnen</string>
<string name="sk_settings_display_pronouns_in_timelines">Toon voornaamwoorden op tijdlijnen</string>
<string name="sk_switch_timeline">Tijdlijn wisselen</string>
<string name="sk_hashtag_timeline_local_only_switch">Alleen lokale berichten tonen\?</string>
<string name="sk_icon_umbrella">Paraplu</string>
<string name="sk_unfinished_attachments">Uploaden bijlagen</string>
<string name="sk_timeline_cache_cleared">Cache gewist van de home tijdlijn</string>
<string name="sk_timeline_cache_cleared">Buffer van de starttijdlijn leeggemaakt</string>
<string name="sk_muted_accounts">Genegeerde accounts</string>
<string name="sk_settings_true_black">Diepzwarte modus</string>
<string name="sk_edit_timeline_tag_any">...of een van deze</string>
<string name="sk_settings_display_pronouns_in_threads">Toon voornaamwoorden in threads</string>
<string name="sk_settings_display_pronouns_in_threads">Toon voornaamwoorden in gesprekken</string>
<string name="sk_edit_timeline_tag_all">...en elke van deze</string>
<string name="sk_icon_diamond">Diamant</string>
<string name="sk_trending_posts_info_banner">Deze berichten zijn momenteel populair in de Fediverse.</string>
<string name="sk_trending_posts_info_banner">Deze berichten zijn momenteel populair in de fediverse.</string>
<string name="sk_settings_display_pronouns_in_user_listings">Toon voornaamwoorden in gebruikersoverzichten</string>
<string name="sk_icon_doctor">Dokter</string>
<string name="sk_edit_timeline_tag_hint">Voer hashtag in…</string>
<string name="sk_icon_bed">Bed</string>
<string name="sk_edit_timeline_tag_none">...maar geen van deze</string>
<string name="sk_icon_beaker">Beker</string>
<string name="sk_button_mutuals">Vrienden</string>
<string name="sk_button_mutuals">Jullie volgen elkaar</string>
<string name="sk_exclusive_list">Exclusieve lijst</string>
<string name="sk_settings_continues_playback">Audio overlay</string>
<string name="sk_icon_recycle_bin">Recycle bak</string>
<string name="sk_trending_links_info_banner">Deze nieuwsberichten worden besproken in de Fediverse.</string>
<string name="sk_search_fediverse">Zoek in de Fediverse</string>
<string name="sk_settings_continues_playback">Audio-overlay</string>
<string name="sk_icon_recycle_bin">Recycle-bak</string>
<string name="sk_trending_links_info_banner">Deze nieuwsberichten worden besproken in de fediverse.</string>
<string name="sk_search_fediverse">In de fediverse zoeken</string>
<string name="sk_post_contains_media">Bericht bevat media</string>
<string name="sk_settings_clear_timeline_cache">Wis de cache van de home tijdlijn</string>
<string name="sk_edit_alt_text">Bewerk alt tekst</string>
<string name="sk_settings_clear_timeline_cache">Buffer van de starttijdlijn leegmaken</string>
<string name="sk_edit_alt_text">Alt-tekst bewerken</string>
<string name="sk_settings_unifiedpush">Gebruik UnifiedPush</string>
<string name="sk_add_timeline_tag_error_empty">Hashtag mag niet leeg zijn</string>
<string name="sk_list_exclusive_switch_explanation">Berichten van leden op een exclusieve lijst worden niet getoond in je home tijdlijn - als je instance dit ondersteunt.</string>
<string name="sk_list_exclusive_switch_explanation">Berichten van leden op een exclusieve lijst worden niet op je starttijdlijn getoond - als je server dit ondersteunt.</string>
<string name="sk_pronouns_label">Voornaamwoorden</string>
<string name="sk_settings_reply_visibility_following">Reageert op accounts die ik volg</string>
<string name="sk_settings_reply_visibility_self">Reageert op mij</string>
@@ -405,15 +405,27 @@
<string name="sk_content_type">Inhoudstype</string>
<string name="sk_settings_default_content_type_explanation">Hiermee wordt tijdens het opstellen van een bericht standaard een inhoudstype geselecteerd. De instelling onder “bericht-instellingen” wordt hiermee overschreven.</string>
<string name="sk_settings_prefix_replies_to_others">Alleen als reactie op anderen</string>
<string name="sk_settings_emoji_reactions_explanation">Emoji-reacties op berichten tonen en het plaatsen daarvan toestaan. Dit wordt door verscheidende Fediverse-servers ondersteund, maar niet door Mastodon.</string>
<string name="sk_settings_emoji_reactions_explanation">Emoji-reacties op berichten tonen en het plaatsen daarvan toestaan. Dit wordt door verscheidende fediverse-servers ondersteund, maar niet door Mastodon.</string>
<string name="sk_settings_show_emoji_reactions_hide_empty">Lege emoji-reacties verbergen</string>
<string name="sk_settings_show_emoji_reactions_always">Altijd de knop tonen om ze toe te voegen</string>
<string name="sk_enter_emoji_toast">Type een emoji</string>
<string name="sk_search_suicide_title">Wanneer je in nood verkeert…</string>
<string name="sk_search_suicide_message">Wanneer je op zoek bent naar een reden om geen zelfmoord te plegen, is dit de juiste plek. Overweeg wanneer je in nood verkeert om contact op te nemen met de lokale zelfmoordpreventie.</string>
<string name="sk_search_suicide_message">Wanneer je op zoek bent naar een reden om geen zelfmoord te plegen, is dit de juiste plek. Overweeg wanneer je in nood verkeert om contact op te nemen met je lokale zelfmoordpreventie.</string>
<string name="sk_settings_default_visibility">Standaard zichtbaarheid van nieuwe berichten</string>
<string name="sk_private_note_hint">Een persoonlijke opmerking over dit account toevoegen</string>
<string name="sk_confirm_changes">Wijzigingen bevestigen</string>
<string name="sk_settings_continues_playback_summary">Laat media wat al aan het afspelen is, over het nieuwe afspeelvenster heen doorgaan met afspelen</string>
<string name="sk_bubble_timeline_info_banner">Dit zijn de meest recente berichten uit het netwerk, samengesteld door jouw serverbeheerders.</string>
<string name="sk_settings_continues_playback_summary">Laat media wat al aan het afspelen is, over het nieuwe afspeelvenster heen doorspelen</string>
<string name="sk_bubble_timeline_info_banner">Dit zijn de meest recente berichten uit het door jou serverbeheerders samengestelde deel van het netwerk.</string>
<string name="sk_private_note_update_failed">Opslaan van opmerking mislukt</string>
<string name="sk_private_note_confirm_delete">Persoonlijke opmerking over %s verwijderen?</string>
<string name="sk_delete_note">Persoonlijke opmerking verwijderen</string>
<string name="sk_settings_copy_crash_log">Laatste crash-log kopiëren</string>
<string name="sk_crash_log_copied">Crash-log gekopieerd</string>
<string name="sk_open_post_preview">Bericht voorvertonen</string>
<string name="sk_post_preview">Voorvertonen</string>
<string name="sk_poll_multiple_choice">Meerkeuzevragen</string>
<string name="sk_poll_show_results">Resultaten bekijken</string>
<string name="sk_poll_hide_results">Resultaten verbergen</string>
<string name="sk_add_note">Persoonlijke opmerking toevoegen</string>
<string name="sk_settings_crash_log_unavailable">(Alsnog) niks aanwezig</string>
</resources>

View File

@@ -141,4 +141,5 @@
<string name="mo_error_display_text">Something went wrong while loading this post. If the problem persists, please report it on our Issues page along with the error details.</string>
<string name="mo_error_display_copy_error_details">Copy details</string>
<string name="mo_trending_link_read">Read</string>
<string name="mo_icon_gnome" translatable="false">GNOME</string>
</resources>

View File

@@ -206,7 +206,13 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
if(state==UpdateState.DOWNLOADING)
throw new IllegalStateException();
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.TIRAMISU){
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), Context.RECEIVER_EXPORTED);
}else{
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
downloadID=dm.enqueue(
new DownloadManager.Request(Uri.parse(getPrefs().getString("apkURL", null)))
.setDestinationUri(Uri.fromFile(getUpdateApkFile()))

View File

@@ -0,0 +1,4 @@
- Fixes Pixelfed login
- Fixes numerous crashes
For full changelog, see https://github.com/LucasGGamerM/moshidon/releases/tag/2.3.0%2Bfork.107.moshinda

View File

@@ -0,0 +1,9 @@
* Importar configuraciones de exportación (solo para cuentas registradas)
* Representar las URL de las publicaciones como si fueran publicaciones de citas reales
* Ver aspectos destacados del filtro
* Advertir si UnifiedPush está deshabilitado en fdroid
* Colocar los botones de descarga/compartir en el visor de imágenes en su lugar anterior
* Ver líneas de tiempo de enlaces de tendencia (el servidor debe soportarlo)
* Agregar opción para eliminar los parámetros de seguimiento de la URL
* Ahora puedes elegir una cuenta al iniciar la redacción desde un menú de inicio
* Muchas correcciones de errores menores y mejoras.

View File

@@ -0,0 +1 @@
Mastodon pour Android, mais avec Material You et plus de fonctionnalités

View File

@@ -0,0 +1,9 @@
* Impor. ir ekspor. nustat. (tik prisijung. paskyroms)
* Atvaiz. įrašų URL adres. taip, tarsi jie būtų tikri cita. įrašai
* Žr. filtro akcentus
* Įspėti, jei „UnifiedPush“ išjungtas per „F-Droid“
* Įd. atsisiun. / bendrin. myg. vaizdų žiūryklėje į ankstesnę vietą
* Žr. laiko skales prie tenden. nuorodų (serve. turi tai palaikyti)
* Prid. parinktį, kad būtų galima pašal. URL sekimo parametr.
* Dabar galima pasirin. paskyrą palei. rengyklę iš paleid. meniu
* Daug smulkių klai. taisym. ir patobul.

View File

@@ -0,0 +1,3 @@
Nauji dalykai 96 leidimui:
- Patobulinta galimybė turėti kitų serverių vietines laiko skales laiko skalėse
- Smulkūs pataisymai ir patobulinimai

View File

@@ -0,0 +1,3 @@
97 leidimas pridėta:
- Nauja funkcija Pasirinktinės vietinės laiko skalės. Ją galima pasiekti meniu Pridėti laiko skales
- Nedideli pataisymai ir patobulinimai

View File

@@ -0,0 +1,6 @@
Nauji dalykai 99 leidimui:
- Pridėti pranešimų veiksmus
- Pridėti parinktį, leidžiančią pagal numatytuosius nustatymus įjungti neįtrauktus į sąrašą atsakymus
- Pridėti nutildymo laikmatį
- Pridėti pranešimo ženklelį, jei yra neperskaitytų pranešimų
- Nedideli klaidų pataisymai ir naudojimo patogumo patobulinimai

View File

@@ -0,0 +1,9 @@
- Completely redesigned settings fragment
- New camera shortcut added to the Composition fragment
- Fixes many crashes on Calckey
- Many improvements to Akkoma/Pleroma
- Many improvements to filters behavior
- New redesigned Account sheet
- Add the option to change post content style (Plain text, markdown, etc) on instances that support it
- Add the ability to view one's server info by tapping on their username inside of anyone's profile
- Many, many small fixes and improvements

View File

@@ -0,0 +1,11 @@
This new release comes with:
- New completely updated Material 3 design from upstream
- UnifiedPush notifications support (Thanks @FineFindus!)
- Blocks and mutes are now visible from your profile
- You can now mute hashtags directly from the hashtag view
- Emoji reactions are now a thing on instances that support it (Thanks @sk22!)
- Editing filters in app is also now a thing (Thanks upstream)
- You can now hide media previews from timelines
- New Black & White theme added
- Muting conversations is now possible
- Many small fixes and improvements

View File

@@ -0,0 +1,9 @@
- You can now filter notifications shown in the notification tab directly from the 'Filter notifications' button
- Improvements for akkoma: translations, quoted posts will now be displayed correctly, and the ability to preview posts before publishing (Thanks Megalodon!)
- Reach and Privacy settings now available in app
- Option to disable underlined links
- Using a Heart as a favorite icon is now possible
- You can now copy crash logs in case you need to file a bug report
- Added Bookmarks and Your favorites as pinnable timelines (Thanks Megalodon!)
- You can now see the difference between the edited and original posts in the edit history (Thanks @FineFindus!)
- Many small bug fixes

View File

@@ -0,0 +1,2 @@
- Enabled sharing directly from the image viewer (No need to download the media to share it anymore)
- Many minor bugfixes and improvements

View File

@@ -0,0 +1,3 @@
- Merged upstream (2.3.0)
- Added remote fetching for status history
- Fixed a bunch of bugs

View File

@@ -0,0 +1,9 @@
* Import export settings (for logged accounts only)
* Render post URLs as if they were actual quote posts
* See filter highlights
* Warn if UnifiedPush is disabled on fdroid
* Put the download/share buttons on the image viewer in their previous place
* See timelines to trending links (server must support it)
* Add option to strip url's tracking parameters
* You can now pick an account when launching compose from a launcher menu
* Many minor bugfixes and improvements

View File

@@ -0,0 +1,6 @@
- The latest crash log is now kept and ready to be copied from the "About Megalodon" settings page
- Add and display personal notes on profiles
- Text modifications are now highlighted in the edit history
- Akkoma: Quoted posts are displayed in the timeline; translation; preview posts before publishing
- Added Bookmarks and Your favorites as pinnable timelines
- Various bugfixes

View File

@@ -0,0 +1,6 @@
- Add language selector
- Add translate function
- Improve semantics for voting on polls (radio buttons and checkboxes)
- Add option to allow voting for multiple options on polls
- New login screen
- Bugfixes

View File

@@ -0,0 +1,5 @@
- New color themes: Material You and Red
- New dark gray tones for all themes
- More distinct filled boost icon
- Animations for interaction buttons
- Bugfixes (Crash on some posts, "Lists with", default posting language)

View File

@@ -0,0 +1,11 @@
- Customizable Publish button
- Open Fediverse links in the app
- Long-click boost button to "quote" a post
- Copy post URL when long-pressing share button
- Implement deleting notifications (disabled by default)
- Dedicated icons for different notification types
- New gray colors
- Add setting to disable swiping between tabs
- Add various links to account settings
- Toggle for showing/hiding the translate button in the timeline
- Bugfixes and tweaks

View File

@@ -0,0 +1,6 @@
- Option to reblog with specific visibility on long-click
- Show visibility of own reblogs
- Add list of followed hashtags
- Long-click to copy links
- Option to open posts with other account
- Bugfixes and minor tweaks

View File

@@ -0,0 +1,10 @@
- Drafts and scheduled posts
- Display original post when replying
- Mastodon 4.0 compatible filters (no "hide with warning" function yet)
- Long-click to interact with posts (reply, boost, like, bookmark) from other logged-in accounts
- Icons in all menus
- Toggle for forwarding reports
- Add mention when using "Post about this" function
- Option to use uniform notifications icon instead of distinct icons
- Option to access in-app rules list from settings
- Bugfixes

View File

@@ -0,0 +1,10 @@
- New home tab with public timelines
- Display server announcements
- Text is scaled according to system settings
- Improved filtering (no, "Hide with a warning" doesn't work yet) by @thiagojedi
- List management features
- Remove followers by soft-blocking them
- Disallow connections with fascists
- Fix images not loading when connected to Akkoma instance
- Bugfixes and UI tweaks
- Add changelog to updater by @LucasGGamerM

View File

@@ -0,0 +1,9 @@
- Timelines can be pinned and rearranged
- Support local-only posts
- Indicator for missing alt texts
- Improved alt text editor
- Header in timeline for followed hashtags
- More notification categories
- Add back file opener
- Prompt when saving edited draft
- Option to disable “See new posts” button

View File

@@ -0,0 +1,9 @@
- Timelines can be pinned and rearranged
- Support local-only posts
- Indicator for missing alt texts
- Improved alt text editor
- Header in timeline for followed hashtags
- More notification categories
- Add back file opener
- Prompt when saving edited draft
- Option to disable “See new posts” button

View File

@@ -0,0 +1,6 @@
- Improved filters, including “Hide with warning”-compatibility
- Redesigned profile page with metadata directly below the bio
- Collapse/expand function for very long posts
- Option to automatically prefix replys CWs with “re:”
- Option to hide interaction buttons in the timeline
- Various bugfixes, tweaks and improvements

View File

@@ -0,0 +1,4 @@
- Long-press follow button to follow profiles from other account
- Option to open profiles in other account
- Auto-hide compose button when scrolling down the timeline
- Fix crash when opening server admin's profiles

View File

@@ -0,0 +1 @@
Removing the toot dividers on the main timeline! Its also configurable.

View File

@@ -0,0 +1 @@
Adding a donate button!

View File

@@ -0,0 +1 @@
Now adding an optional toggle for bringing the publish button to a more reachable position! It's the default now!

View File

@@ -0,0 +1,2 @@
Fixing publish button being cut of on low DPIs or on longer languages. Its now an icon when its on the reachable state!
Minor fixes to the changelog preview

View File

@@ -0,0 +1,9 @@
Release 82 adds a lot of features from upstream, such as:
- Drafts and scheduled posts
- A settings page rework
- The ability to choose the publish button text
- The ability to reduce animations
- A bot icon for bot account profiles! Thanks @FineFindus
- And updated German translation! Thanks @dantobi
- A lot of minor UI improvements
- Major usability improvements, as the ability to hold action buttons to interact with another account

View File

@@ -0,0 +1,4 @@
Release 83 brings some minor improvements, such as:
- Fixing crashing issues when clicking mentions
- Reworking the bot icon
- Adding a reminder to add an image description if you post an attachment allow visually impaired people to better participate. Thanks @FineFindus!

View File

@@ -0,0 +1,3 @@
Release 84 fixes a few bugs, such as:
- Login callback not working
- Updating german translation. Thanks @DanTobi!

View File

@@ -0,0 +1,7 @@
New stuff that comes with Release 85:
Adding long click search button to bring up the keyboard
Clicking the search button when already in search tab also brings up keyboard
Bringing up a bot icon to toots from bot accounts, Thanks @FineFindus!
Improving visibility of bot icon inside account profile, Thanks @FineFindus!
Updating german translation, Thanks @Dontobi!
Fixing minor UI issues

View File

@@ -0,0 +1,4 @@
New things for release 86:
- Ability to stack notifications, ie: having multiple notifications;
- Introducing Announcements;
- Many minor UI fixes.

View File

@@ -0,0 +1,5 @@
New things for 87:
- A new home layout from Megalodon, having the ability to switch between them is WIP
- Better handling of notifications
- A new ravamped bot icon
- A bunch of minor improvements

View File

@@ -0,0 +1,6 @@
New things for release number 88:
- An improved Fab behavior
- Better handling on alt texts
- Enable local-only posting for instances that support it
- Fix some crashes
- Minor improvements

View File

@@ -0,0 +1 @@
Release 89 is a bug fix release, so a few crashes have been fixed as well as a few settings not being saved.

View File

@@ -0,0 +1,5 @@
New things for release 91:
- The ability to have filtered posts show with a warning
- Fixed included auto updater
- Fixed a few crashes with the filtering system
- Minor quality of life improvements

View File

@@ -0,0 +1,4 @@
New things for release 92:
- Better filters
- New profile page layout
- A bunch of minor tweaks and improvements

View File

@@ -0,0 +1,5 @@
New things for 94:
- Improvements on the fab behavior
- Minor changes to the launcher icon
- Improvements on the notification behavior
- Minor bugfixes and improvements

View File

@@ -0,0 +1,3 @@
New things for 95:
- Adding the ability to have other server's local timelines in the timelines
- Minor fixes and improvements

View File

@@ -0,0 +1,3 @@
New things for 96:
- Improving the ability to have other server's local timelines in the timelines
- Minor fixes and improvements

View File

@@ -0,0 +1,3 @@
Release 97 adds:
- New Custom Local Timelines feature. It can be accessed on the add timelines menu
- Minor fixes and improvements

View File

@@ -0,0 +1 @@
Initial play store release

View File

@@ -0,0 +1,6 @@
New things for release 99:
- Add notification actions
- Add option to enable unlisted replies by default
- Add mute timer
- Add notification badge if there are unread notifications
- Minor bugfixes and usability improvements

View File

@@ -0,0 +1,16 @@
Moshidon is a modified version of the <a href="https://github.com/mastodon/mastodon-android">official Mastodon Android app</a> adding important features that are missing in the official app, such as the federated timeline, unlisted posting and an image description viewer.
<b>Key features</b>
- <b>Many colors</b>: Brings material you theme and many colorful options for themes!
- <b>Filtered posts!</b>: The ability to have filtered posts show with a warning!
- <b>Translate button</b>: Brings a translate button!
- <b>Toot language picker</b>: Brings in a toot language picker!
- <b>Unlisted posting</b>: Post publicly without having your post show up in trends, hashtags or public timelines.
- <b>Federated timeline</b>: See all public posts from people on all other Fediverse neighborhoods your home instance is connected to.
- <b>Image description viewer</b>: Quickly check whether an image or video has an alt text attached to it.
- <b>Pinning posts</b>: Pin your most important posts to your profile and see what others have pinned using the “Pinned“ tab.
- <b>Follow hashtags</b>: See new posts from specific hashtags directly in your home timeline by following them.
- <b>Answering follow requests</b>: Accept or decline follow requests from your notifications or the dedicated Follow requests list.
- <b>Delete and re-draft</b>: The much-loved feature that made editing possible without an actual editing function.
- <b>Extras</b>: Brings many extra UI features, such as interaction icons on the Notifications and removing many annoyances with the original UI!