Compare commits
77 Commits
2.3.0+fork
...
2.3.0+fork
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dae5989d64 | ||
|
|
1d1c4f2666 | ||
|
|
0fecdf345a | ||
|
|
82bcfe3fa8 | ||
|
|
203c43343a | ||
|
|
4c105acc30 | ||
|
|
d81eb6ad0a | ||
|
|
08542cd16f | ||
|
|
f30e12f5c6 | ||
|
|
3a14fb5912 | ||
|
|
cc64a1b6a2 | ||
|
|
7fa079e362 | ||
|
|
c2e6280a18 | ||
|
|
01225b05f2 | ||
|
|
89f27984b7 | ||
|
|
61b933655c | ||
|
|
d47e1939d0 | ||
|
|
00b934dc69 | ||
|
|
c86ff1cce4 | ||
|
|
5427b21365 | ||
|
|
d875edbc23 | ||
|
|
4aecb17497 | ||
|
|
806db1d09f | ||
|
|
49cf100d37 | ||
|
|
259a0ae140 | ||
|
|
420233da14 | ||
|
|
78ec24ff0c | ||
|
|
a6f1d981db | ||
|
|
b07789b346 | ||
|
|
42c55d5eee | ||
|
|
13545fd5ef | ||
|
|
134513babd | ||
|
|
91cb616164 | ||
|
|
f3d600282e | ||
|
|
c26df5762f | ||
|
|
2021c335ac | ||
|
|
d121f14d30 | ||
|
|
d1a2a70cdc | ||
|
|
89ef482e2e | ||
|
|
9918649d7c | ||
|
|
09185faf9a | ||
|
|
bed201a2f7 | ||
|
|
5e7a4c0136 | ||
|
|
bcb8717d5f | ||
|
|
ed1c1bd097 | ||
|
|
f480532fd6 | ||
|
|
cc056cef08 | ||
|
|
9e7445b8d8 | ||
|
|
e2d96d3bc7 | ||
|
|
4f5c99be21 | ||
|
|
0388f9d9be | ||
|
|
c45128ced0 | ||
|
|
f404d2f9cd | ||
|
|
2dada69eb8 | ||
|
|
b7e0596014 | ||
|
|
dbef984908 | ||
|
|
55259f103d | ||
|
|
81519fe906 | ||
|
|
07ab3c394a | ||
|
|
620cc94351 | ||
|
|
2494918171 | ||
|
|
a0bed5e739 | ||
|
|
a42bf86a1e | ||
|
|
9c7ae9653b | ||
|
|
44473705b9 | ||
|
|
f1d40f8963 | ||
|
|
fbae5d8816 | ||
|
|
43afbb7523 | ||
|
|
080815846f | ||
|
|
4b6c6cbcfe | ||
|
|
117037e7e8 | ||
|
|
05972fc702 | ||
|
|
28084b9f9e | ||
|
|
02010df408 | ||
|
|
38f77c69d1 | ||
|
|
d0a8c26b65 | ||
|
|
401602e5bc |
54
FAQ.md
54
FAQ.md
@@ -7,3 +7,57 @@ A: There are many, but the most outstanding differences are: the ability to have
|
||||
Q: Will there ever be a version of Moshidon for iOS?
|
||||
|
||||
A: No. As android and iOS apps do not share code, it is incredibly hard to port.
|
||||
|
||||
## Detailed changes
|
||||
|
||||
### Features
|
||||
|
||||
* [Adding the ability to view other server's local timelines](https://github.com/LucasGGamerM/moshidon/tree/feature/local-timelines)
|
||||
* [Adding the ability to load followers and following from remote instance](https://github.com/LucasGGamerM/moshidon/tree/feature/remote-followers)
|
||||
* [Adding the ability to have filtered posts show with a warning](https://github.com/LucasGGamerM/moshidon/tree/feature/filters_again)
|
||||
* [Add “Unlisted” as a post visibility option](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/enable-unlisted)
|
||||
([Pull request](https://github.com/mastodon/mastodon-android/pull/103))
|
||||
* Adding a useful private profile note box
|
||||
* Auto hiding the compose button on scroll
|
||||
* Adding the ability to remind yourself to add alt text to images
|
||||
* An indicator for if an image has alt text or not
|
||||
* Adding the ability to have drafts
|
||||
* Also adding the ability to view announcements from your instance
|
||||
* Adding the ability to post for local timeline only (Only on instances that support it!)
|
||||
* [Add image description button and viewer](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/display-alt-text) ([Pull request](https://github.com/mastodon/mastodon-android/pull/129))
|
||||
* [Implement pinning posts and displaying pinned posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/pin-posts) ([Pull request](https://github.com/mastodon/mastodon-android/pull/140))
|
||||
* [Implement deleting and re-drafting](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/delete-redraft) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/21))
|
||||
* [Implement a bookmark button and list](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/bookmarks) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/22))
|
||||
* [Add “Check for update” button in addition to integrated update checker](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/check-for-update-button)
|
||||
* [Add “Mark media as sensitive” option](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/mark-media-as-sensitive)
|
||||
* [Add settings to hide replies and reposts from the timeline](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/filter-home-timeline) ([Pull request](https://github.com/mastodon/mastodon-android/pull/317))
|
||||
* [Follow and unfollow hashtags](https://github.com/sk22/megalodon/commit/7d38f031f197aa6cefaf53e39d929538689c1e4e) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/233))
|
||||
* [Notification bell for posts](https://github.com/sk22/megalodon/commit/b166ca705eb9169025ef32bbe6315b42491b57ea) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/81))
|
||||
* [Viewing lists and adding/removing users from lists](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:list-timeline-views) based on [@obstsalatschuessel](https://github.com/obstsalatschuessel)'s [Pull request](https://github.com/mastodon/mastodon-android/pull/286)
|
||||
* [List favorited posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/favs-list)
|
||||
* [Accept/reject follow requests](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/follow-requests)
|
||||
* [Display content warning title above text](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/cw-above-text)
|
||||
* [Add notifications tab for posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/posts-notifications-tab)
|
||||
* [Show visibility of original post when replying](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/display-reply-visibility)
|
||||
* [Clickable reply/boost line above posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:clickable-boost-reply-line)
|
||||
* [Clickable reply line while replying to open original post](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/clickable-reply-line-compose)
|
||||
|
||||
|
||||
### Behavior
|
||||
|
||||
* Ask for confirmation before reblogging
|
||||
* Adding a bottom option for the publish button, allowing for easier use on larger screens!
|
||||
* [Make back button return to the home tab before exiting the app](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/back-returns-home) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/118))
|
||||
* [Always preserve content warnings when replying](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/always-preserve-cw) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/113))
|
||||
* [Display full image when adding image description](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/compose-image-description-full-image) ([Pull request](https://github.com/mastodon/mastodon-android/pull/182))
|
||||
* [Set spoiler height independently to content height](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:spoiler-height-independent) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/166))
|
||||
* [Option to hide interaction numbers](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:settings/hide-interaction-numbers)
|
||||
* [Option to always reveal content warnings](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/cw-above-text)
|
||||
* [Option to disable scrolling title bars](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:settings/disable-marquee)
|
||||
|
||||
|
||||
### Visual
|
||||
|
||||
* [Custom extended footer redesign](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:compact-extended-footer)
|
||||
* [Improvements to the true black mode](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:true-black-improvements)
|
||||
* [Profile header tweaks](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:ui/profile-header-tweaks)
|
||||
|
||||
215
README.md
215
README.md
@@ -1,185 +1,91 @@
|
||||

|
||||
#  Moshidon, the material you mastodon client!
|
||||
|
||||
# Moshidon, the material you mastodon client!
|
||||
|
||||
> A fork of [megalodon](https://github.com/sk22/megalodon) which is a fork of [official Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app and possibly won’t ever be implemented, such as the federated timeline, unlisted posting, bookmarks and an image description viewer.
|
||||
> A fast, highly customizable, up-to-date fork of [megalodon](https://github.com/sk22/megalodon) adding important features such as a fully federated timeline, unlisted posting, drafts, scheduled posts, bookmarks, and alt text warnings.
|
||||
|
||||
|
||||
[](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk)
|
||||
## Download Now
|
||||
|
||||
[](https://github.com/LucasGGamerM/moshidon-nightly/releases/latest/download/moshidon-nightly.apk)
|
||||
<a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android.moshinda"><img height="35" alt="Get it on Google Play" src="img/google-play-badge.png"></a> <a href="https://f-droid.org/pt_BR/packages/org.joinmastodon.android.moshinda"><img height="35" alt="Get it on F-Droid" src="img/f-droid-badge.png"></a> <a href="https://apt.izzysoft.de/fdroid/index/apk/org.joinmastodon.android.moshinda"><img height="35" alt="Get it on IzzyOnDroid" src="img/izzy-badge.png"></a>
|
||||
|
||||
[](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk) [](https://translate.codeberg.org/engage/moshidon/) [](https://github.com/LucasGGamerM/moshidon-nightly/releases/latest/download/moshidon-nightly.apk) [](https://github.com/LucasGGamerM/moshidon/actions/workflows/nightly-builds.yml)
|
||||
|
||||
[](https://translate.codeberg.org/engage/moshidon/)
|
||||
|
||||
[](https://github.com/LucasGGamerM/moshidon/actions/workflows/nightly-builds.yml)
|
||||
## Donate
|
||||
|
||||
<a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android.moshinda"><img height="50" alt="Get it on Google Play" src="img/google-play-badge.png"></a>
|
||||
|
||||
<a href="https://f-droid.org/pt_BR/packages/org.joinmastodon.android.moshinda"><img height="50" alt="Get it on F-Droid" src="img/f-droid-badge.png"></a>
|
||||
|
||||
<a href="https://apt.izzysoft.de/fdroid/index/apk/org.joinmastodon.android.moshinda"><img height="50" alt="Get it on IzzyOnDroid" src="img/izzy-badge.png"></a>
|
||||
<a href="https://github.com/sponsors/LucasGGamerM">Github Sponsors</a> | <a href="https://liberapay.com/LucasGGamerM/donate">Liberapay</a> | Monero Wallet Key: `4886mdarcyB6Yf8Qc6vDJBK1fz6ibHFLZUmHb4GZZz9yLGNhcG3XC64e5UZ8dVQYTLZb82W6P9WhteowW4STJEec97Gf22j`
|
||||
|
||||
## Help out the project by donating at: https://github.com/sponsors/LucasGGamerM!
|
||||
### We also support LiberaPay at: https://liberapay.com/LucasGGamerM/donate
|
||||
## Key Features
|
||||
|
||||
### You can also donate some Monero through this wallet address as well:
|
||||
4886mdarcyB6Yf8Qc6vDJBK1fz6ibHFLZUmHb4GZZz9yLGNhcG3XC64e5UZ8dVQYTLZb82W6P9WhteowW4STJEec97Gf22j
|
||||
[ screenshot of full timeline in default colour scheme ]
|
||||
[ screenshot of full timeline in an alt colour scheme ]
|
||||
[ screenshot of profile page ]
|
||||
[ screenshot of compose post window ]
|
||||
|
||||
---
|
||||
### Flexible Timelines
|
||||
|
||||
## Key features
|
||||
[ Home dropdown menu ]
|
||||
|
||||
### **The ability to add other server's local timeline to your timelines**
|
||||
Under the Home menu by default you can see your active account's timeline, your server's local timeline, and your server's federated timeline. You can also pin hashtags, lists, other servers, or make a custom view of just your posts, your bookmarks, or your favourites for quick access. Then sort these timelines to prioritize the ones you visit most often.
|
||||
|
||||
It can be accessed in the "Edit timelines" menu, where you can add a new "Community" to see other server's local posts!
|
||||
### Multiple Accounts & Crossposting
|
||||
|
||||
### **View remote profiles**
|
||||
Sign in to multiple accounts in the same app and easily switch between them. Press and hold on the boost or fave button to boost or fave a post to a different account than the one you are currently browsing with.
|
||||
|
||||
You can now see all of a profile follows and followers, by directly loading them from the profile's home instance. In case of a failed lookup, the app will automatically fall back to the older method.
|
||||
[ boost icon pop up select profile ]
|
||||
|
||||
### **Translate posts easily**
|
||||
### Drafts & Scheduled Posts
|
||||
|
||||
Allows you to easily translate posts in another language with a translate button! Your instance must support translation, otherwise it will not work.
|
||||
Write posts and save them, or schedule them to post later. Edit and delete your drafts.
|
||||
|
||||
### **Show posts filtered with a warning**
|
||||
### Alt Text Tag & Reminder
|
||||
|
||||
Allows you to have filtered posts collapsed with a warning! As shown in the screenshots:
|
||||
An unobtrusive ALT tag appears on images with alt text. Clicking on the icon makes the alt text appear. By default, Moshidon will show a warning to add alt text if your post has any attachments lacking alt text. This is for better accessibility, and it can be disabled in settings. You can also hide from your feed all posts that are lacking in alt text.
|
||||
|
||||
Before | After
|
||||
:-------------------------:|:-------------------------:
|
||||
 | 
|
||||
[ image with alt text icon higlighted ]
|
||||
[ alt text expanded ]
|
||||
|
||||
### Themes & Customization
|
||||
|
||||
### **Color themes**
|
||||
Moshidon is designed according to Material Design principles. Follow your device's light or dark mode settings or change colour palette - your system's default, purple, black & white, "pitch black" (battery saving) and more. Customize your experience by moving or renaming the publish button, show or hide sensitive media by default, reduce motion, collapse long posts, add haptic feedback, or making the fave button a heart ♥ or a star ★.
|
||||
|
||||
Allows you to change theme within the app. Supports Material You, purple, pink, green, blue, red, orange, yellow and Nord!
|
||||
### Not Just For Mastodon
|
||||
|
||||
### **Unlisted posting**
|
||||
Supports features available on other types of fediverse servers such as admin announcements, showing pronouns in user names, post translation, emoji reactions, local-only posting, and markdown or html in posts.
|
||||
|
||||
**Allows you to post publicly without having your post show up in trends, hashtags or public timelines (i.e., in the tabs “Local”, “Community” and “Posts”).**
|
||||
### Fully Federated Feed & Profiles
|
||||
|
||||
When posting with Unlisted visibility, your posts will still be publicly accessible in your profile. They will also be shown in people’s Home timelines, but only if they follow you or someone they follow reposted/replied to your post.
|
||||
|
||||
The Mastodon documentation has some more information about [Unlisted posting](https://docs.joinmastodon.org/user/posting/#unlisted) and [Public timelines](https://docs.joinmastodon.org/user/network/#timelines).
|
||||
See all public posts from servers your server federates with and fetch profiles from a user's local server for accurate up to date information.
|
||||
|
||||
### **Federated timeline**
|
||||
## And more...
|
||||
- quote-posts - links to fediverse posts in other posts will be loaded inline like quote-tweets
|
||||
- manage pinned posts and bookmarks
|
||||
- manage lists, filters, and most privacy settings
|
||||
- display pronouns in timelines, threads, and user listings
|
||||
- get only specific types of notifications (no more finished polls!), limit who you get notifications from, or group all notifications into one.
|
||||
- automatically add "re:" to beginning of replies with content warnings
|
||||
- ask before boosting or deleting posts
|
||||
- when replying to a boosted post automatically mention the person who boosted it
|
||||
- overlay audio from posts, allowing your existing media to keep playing
|
||||
- auto-reveal CWs that are the same as ones you've already opened, or always reveal content warnings and sensitive media
|
||||
- hide media previews in timelines (save data)
|
||||
- show post interaction counts in timeline
|
||||
- allow custom emoji in display names
|
||||
- enable scrolling text for long display names
|
||||
- hide interaction buttons
|
||||
- show post dividers
|
||||
|
||||
**This allows you to chronologically see all Public posts from people on all other Fediverse neighborhoods your home instance is connected to.**
|
||||
|
||||
Despite being one of the main features of federated social media, the Federated timeline wasn’t included in the official Mastodon app – supposedly, because this conflicts with Google’s safety requirements for apps on the Play Store.
|
||||
|
||||
That’s one of the reasons why choosing a small, **well-moderated instance is important**. Instance admins and moderators should always make sure to ban abusive users and stop federating with instances who platform them. On well-moderated instances, the Federated timeline can be a welcoming place to meet new people!
|
||||
## Installation & Releases
|
||||
|
||||
### **Image description viewer**
|
||||
Moshidon is available on GitHub, Google Play, F-Droid, and the IzzyOnDroid repo. All sources provide the same ` moshidon.apk ` stable release. Older releases are available on the [Releases](https://github.com/LucasGGamerM/moshidon/releases) page.
|
||||
|
||||
**Allows you to quickly check whether an image or video has an alternative text attached to it.**
|
||||
### How to Install from GitHub
|
||||
[Download the latest stable release from Github](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk) and open it. You might have to accept installing APK files from your browser. Moshidon will automatically check for new updates available on GitHub and offer to download and install them within the app. You can also manually press “Check for updates” at the bottom of the settings page.
|
||||
|
||||
This is important to **ensure the content you’re sharing is as accessible as possible** to people who can’t see the images and rely on software to read back the provided content descriptions. Thankfully, it’s quite common for people on the Fediverse to provide such alt texts, and hopefully things stay this way!
|
||||
### Nightly Version
|
||||
All ` moshidon-night.apk ` nightly builds can be downloaded on the [Nightly Releases](https://github.com/LucasGGamerM/moshidon-nightly/releases) page. This is an unstable version with an integrated updater for development and testing purposes. If you find any bugs with it, please file a bug report on our [Issues](https://github.com/LucasGGamerM/moshidon/issues) page.
|
||||
|
||||
### **Reminder to add alt text to attached media**
|
||||
|
||||
By default, Moshidon will show a warning to add alt text if your post has any attachments without any alt text. This is for better accessibility, and it can easily be bypassed and disabled in settings.
|
||||
|
||||
### **Pinning posts**
|
||||
|
||||
**This lets you can highlight important posts on your profile. A dedicated “Pinned” tab in people’s profiles shows all the posts they pinned.**
|
||||
|
||||
On the Fediverse, it’s quite common for people to pin posts they want others to read before following them. You can pin/unpin posts yourself by clicking the `⋯` button in the top right corner of your posts.
|
||||
|
||||
### **Bookmarks**
|
||||
|
||||
**They allow for quickly saving posts and viewing them through the Bookmarks button on the top right of your profile.**
|
||||
|
||||
To bookmark a post, press the button between the Favorite and Share buttons on the bottom of the post. Bookmarks are saved privately, so the post authors won’t know you saved their post – the list of bookmarked posts is only visible to you.
|
||||
|
||||
## Installation
|
||||
|
||||
**Press the download button above to download the APK. Open the downloaded file on your Android device to install it. Moshidon will automatically notify you about new updates inside the app.**
|
||||
|
||||
To install this app on your Android device, download the [latest release from GitHub](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk) and open it. You might have to accept installing APK files from your browser when trying to install it. You can also take a look at all releases on the [Releases](https://github.com/LucasGGamerM/moshidon/releases) page.
|
||||
|
||||
Moshidon makes use of [Mastodon for Android](https://github.com/mastodon/mastodon-android)’s automatic update checker. Moshidon will check for new updates available on GitHub and offer to download and install them. You can also manually press “Check for updates” at the bottom of the settings page!
|
||||
|
||||
Moshidon is also available in [IzzyOnDroid repo](https://apt.izzysoft.de/fdroid/index/apk/org.joinmastodon.android.moshinda), compatible with all F-Droid clients. The APK provided here is the same as the one included in the Releases.
|
||||
|
||||
## Release variants
|
||||
|
||||
### Stable variant
|
||||
|
||||
All stable version downloads can be found on the [Releases](https://github.com/LucasGGamerM/moshidon/releases) page.
|
||||
|
||||
**`moshidon.apk`**
|
||||
|
||||
Variant with an integrated updater. If you download Moshidon from here (and not from an app store), just download the regular `moshidon.apk`.
|
||||
|
||||
### Nightly variant
|
||||
|
||||
All nightly builds can be downloaded at [Nightly Releases](https://github.com/LucasGGamerM/moshidon-nightly/releases) page.
|
||||
|
||||
**`moshidon-nightly.apk`**
|
||||
|
||||
Unstable variant with an integrated updater. It's for development and testing purposes. If you find any bugs with it, please file a bug report at our [issues](https://github.com/LucasGGamerM/moshidon/issues) page.
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Detailed changes
|
||||
|
||||
### Features
|
||||
|
||||
* [Adding the ability to view other server's local timelines](https://github.com/LucasGGamerM/moshidon/tree/feature/local-timelines)
|
||||
* [Adding the ability to load followers and following from remote instance](https://github.com/LucasGGamerM/moshidon/tree/feature/remote-followers)
|
||||
* [Adding the ability to have filtered posts show with a warning](https://github.com/LucasGGamerM/moshidon/tree/feature/filters_again)
|
||||
* [Add “Unlisted” as a post visibility option](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/enable-unlisted)
|
||||
([Pull request](https://github.com/mastodon/mastodon-android/pull/103))
|
||||
* Adding a useful private profile note box
|
||||
* Auto hiding the compose button on scroll
|
||||
* Adding the ability to remind yourself to add alt text to images
|
||||
* An indicator for if an image has alt text or not
|
||||
* Adding the ability to have drafts
|
||||
* Also adding the ability to view announcements from your instance
|
||||
* Adding the ability to post for local timeline only (Only on instances that support it!)
|
||||
* [Add image description button and viewer](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/display-alt-text) ([Pull request](https://github.com/mastodon/mastodon-android/pull/129))
|
||||
* [Implement pinning posts and displaying pinned posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/pin-posts) ([Pull request](https://github.com/mastodon/mastodon-android/pull/140))
|
||||
* [Implement deleting and re-drafting](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/delete-redraft) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/21))
|
||||
* [Implement a bookmark button and list](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/bookmarks) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/22))
|
||||
* [Add “Check for update” button in addition to integrated update checker](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/check-for-update-button)
|
||||
* [Add “Mark media as sensitive” option](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/mark-media-as-sensitive)
|
||||
* [Add settings to hide replies and reposts from the timeline](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/filter-home-timeline) ([Pull request](https://github.com/mastodon/mastodon-android/pull/317))
|
||||
* [Follow and unfollow hashtags](https://github.com/sk22/megalodon/commit/7d38f031f197aa6cefaf53e39d929538689c1e4e) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/233))
|
||||
* [Notification bell for posts](https://github.com/sk22/megalodon/commit/b166ca705eb9169025ef32bbe6315b42491b57ea) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/81))
|
||||
* [Viewing lists and adding/removing users from lists](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:list-timeline-views) based on [@obstsalatschuessel](https://github.com/obstsalatschuessel)'s [Pull request](https://github.com/mastodon/mastodon-android/pull/286)
|
||||
* [List favorited posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/favs-list)
|
||||
* [Accept/reject follow requests](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/follow-requests)
|
||||
* [Display content warning title above text](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/cw-above-text)
|
||||
* [Add notifications tab for posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/posts-notifications-tab)
|
||||
* [Show visibility of original post when replying](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/display-reply-visibility)
|
||||
* [Clickable reply/boost line above posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:clickable-boost-reply-line)
|
||||
* [Clickable reply line while replying to open original post](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/clickable-reply-line-compose)
|
||||
|
||||
|
||||
### Behavior
|
||||
|
||||
* Allow for confirmation before reblogging
|
||||
* Adding a bottom option for the publish button, allowing for easier use on larger screens!
|
||||
* [Make back button return to the home tab before exiting the app](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/back-returns-home) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/118))
|
||||
* [Always preserve content warnings when replying](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/always-preserve-cw) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/113))
|
||||
* [Display full image when adding image description](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/compose-image-description-full-image) ([Pull request](https://github.com/mastodon/mastodon-android/pull/182))
|
||||
* [Set spoiler height independently to content height](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:spoiler-height-independent) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/166))
|
||||
* [Option to hide interaction numbers](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:settings/hide-interaction-numbers)
|
||||
* [Option to always reveal content warnings](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/cw-above-text)
|
||||
* [Option to disable scrolling title bars](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:settings/disable-marquee)
|
||||
|
||||
|
||||
### Visual
|
||||
|
||||
* [Custom extended footer redesign](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:compact-extended-footer)
|
||||
* [Improvements to the true black mode](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:true-black-improvements)
|
||||
* [Profile header tweaks](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:ui/profile-header-tweaks)
|
||||
|
||||
|
||||
## Building
|
||||
## Building & Contributing
|
||||
|
||||
As this app is using Java 17 features, you need JDK 17 or newer to build it. Other than that, everything is pretty standard. You can either import the project into Android Studio and build it from there, or run the following command in the project directory:
|
||||
|
||||
@@ -191,14 +97,13 @@ As this app is using Java 17 features, you need JDK 17 or newer to build it. Oth
|
||||
|
||||
This project is released under the [GPL-3 License](./LICENSE).
|
||||
|
||||
## Links
|
||||
## Contact & Support
|
||||
|
||||
**<a rel="me" href="https://floss.social/@moshidon">@moshidon@floss.social</a>**
|
||||
|
||||
[Official Matrix Chatroom](https://matrix.to/#/#moshidon:floss.social)
|
||||
|
||||
[F.A.Q](FAQ.md)
|
||||
|
||||
[Official matrix chatroom:](https://matrix.to/#/#moshidon:floss.social) https://matrix.to/#/#moshidon:floss.social
|
||||
[Moshidon Roadmap](https://github.com/users/LucasGGamerM/projects/1)
|
||||
|
||||
[Moshidon roadmap](https://github.com/users/LucasGGamerM/projects/1)
|
||||
|
||||
<a rel="me" href="https://floss.social/@moshidon">@moshidon<wbr>@floss.social</a>
|
||||
|
||||
---
|
||||
|
||||
24
build.gradle
24
build.gradle
@@ -1,23 +1,3 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven {
|
||||
url "https://www.jitpack.io"
|
||||
content {
|
||||
includeModule 'com.github.UnifiedPush', 'android-connector'
|
||||
}
|
||||
}
|
||||
mavenLocal()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.0.0'
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
plugins {
|
||||
id("com.android.application") version "8.7.2" apply false
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
@@ -17,7 +17,5 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
|
||||
android.useAndroidX=true
|
||||
# Automatically convert third-party libraries to use AndroidX
|
||||
android.enableJetifier=false
|
||||
android.defaults.buildfeatures.buildconfig=true
|
||||
android.nonTransitiveRClass=true
|
||||
android.nonFinalResIds=false
|
||||
org.gradle.configuration-cache=true
|
||||
org.gradle.configuration-cache=true
|
||||
|
||||
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,7 +1,7 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionSha256Sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
|
||||
distributionSha256Sum=57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
|
||||
networkTimeout=10000
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -16,8 +16,8 @@ android {
|
||||
applicationId "org.joinmastodon.android.moshinda"
|
||||
minSdk 23
|
||||
targetSdk 34
|
||||
versionCode 106
|
||||
versionName "2.3.0+fork.106.moshinda"
|
||||
versionCode 108
|
||||
versionName "2.3.0+fork.108.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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +211,13 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
|
||||
if(state==UpdateState.DOWNLOADING)
|
||||
throw new IllegalStateException();
|
||||
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
|
||||
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
|
||||
|
||||
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()))
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<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"/>
|
||||
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
|
||||
|
||||
@@ -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));
|
||||
registerReceiver(receiver, new IntentFilter(ACTION_PLAY_PAUSE));
|
||||
registerReceiver(receiver, new IntentFilter(ACTION_STOP));
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,8 @@ public class ExternalShareActivity extends FragmentStackActivity{
|
||||
}
|
||||
|
||||
private void openComposeFragment(String accountID){
|
||||
AccountSession session=AccountSessionManager.get(accountID);
|
||||
UiUtils.setUserPreferredTheme(this, session);
|
||||
getWindow().setBackgroundDrawable(null);
|
||||
|
||||
Intent intent=getIntent();
|
||||
|
||||
@@ -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++){
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -105,6 +105,11 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
|
||||
muteMenuItem.setIcon(newMute ? R.drawable.ic_fluent_speaker_2_24_regular : R.drawable.ic_fluent_speaker_off_24_regular);
|
||||
}
|
||||
|
||||
private void updateFollowState(boolean following) {
|
||||
followMenuItem.setTitle(getString(following ? R.string.unfollow_user : R.string.follow_user, "#"+hashtagName));
|
||||
followMenuItem.setIcon(following ? R.drawable.ic_fluent_person_delete_24_filled : R.drawable.ic_fluent_person_add_24_regular);
|
||||
}
|
||||
|
||||
private void showMuteDialog(boolean mute) {
|
||||
UiUtils.showConfirmationAlert(getContext(),
|
||||
mute ? R.string.mo_unmute_hashtag : R.string.mo_mute_hashtag,
|
||||
@@ -148,8 +153,6 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
|
||||
}).exec(accountID);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected TimelineDefinition makeTimelineDefinition() {
|
||||
return TimelineDefinition.ofHashtag(hashtagName);
|
||||
@@ -292,6 +295,7 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
|
||||
followMenuItem=optionsMenu.findItem(R.id.follow_hashtag);
|
||||
pinMenuItem=optionsMenu.findItem(R.id.pin);
|
||||
followMenuItem.setVisible(toolbarContentVisible);
|
||||
updateFollowState(hashtag!=null && hashtag.following);
|
||||
// pinMenuItem.setShowAsAction(toolbarContentVisible ? MenuItem.SHOW_AS_ACTION_NEVER : MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
super.updatePinButton(pinMenuItem);
|
||||
|
||||
@@ -388,8 +392,7 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
|
||||
followButton.setTextVisible(true);
|
||||
followProgress.setVisibility(View.GONE);
|
||||
if(followMenuItem!=null){
|
||||
followMenuItem.setTitle(getString(hashtag.following ? R.string.unfollow_user : R.string.follow_user, "#"+hashtagName));
|
||||
followMenuItem.setIcon(hashtag.following ? R.drawable.ic_fluent_person_delete_24_filled : R.drawable.ic_fluent_person_add_24_regular);
|
||||
updateFollowState(hashtag.following);
|
||||
}
|
||||
if(muteMenuItem!=null){
|
||||
muteMenuItem.setTitle(getString(filter.isPresent() ? R.string.unmute_user : R.string.mute_user, "#" + hashtag));
|
||||
@@ -429,6 +432,7 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
|
||||
return;
|
||||
hashtag=result;
|
||||
updateHeader();
|
||||
updateFollowState(result.following);
|
||||
followRequestRunning=false;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.MastodonApp;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.requests.accounts.GetAccountByID;
|
||||
import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships;
|
||||
@@ -287,11 +288,10 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
noteEdit.setOnFocusChangeListener((v, hasFocus)->{
|
||||
if(hasFocus){
|
||||
hideFab();
|
||||
noteEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
|
||||
}else{
|
||||
showFab();
|
||||
savePrivateNote(noteEdit.getText().toString());
|
||||
return;
|
||||
}
|
||||
showFab();
|
||||
savePrivateNote(noteEdit.getText().toString());
|
||||
});
|
||||
|
||||
FrameLayout sizeWrapper=new FrameLayout(getActivity()){
|
||||
@@ -454,8 +454,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
}
|
||||
|
||||
private void hidePrivateNote(){
|
||||
noteWrap.setVisibility(View.GONE);
|
||||
noteEdit.setText(null);
|
||||
noteWrap.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void savePrivateNote(String note){
|
||||
@@ -469,6 +469,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
public void onSuccess(Relationship result) {
|
||||
updateRelationship(result);
|
||||
invalidateOptionsMenu();
|
||||
if(!TextUtils.isEmpty(result.note))
|
||||
Toast.makeText(MastodonApp.context, R.string.mo_personal_note_saved, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1587,8 +1589,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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -39,6 +39,16 @@ public class ErrorStatusDisplayItem extends StatusDisplayItem{
|
||||
findViewById(R.id.button_copy_error_details).setOnClickListener(this::copyErrorDetails);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(){
|
||||
// explicitly do nothing when clicked
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBind(ErrorStatusDisplayItem item) {
|
||||
openInBrowserButton.setEnabled(item.status!=null && item.status.url!=null);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() && statusForContent.account!=null){
|
||||
tryAddNonOfficialQuote(statusForContent, fragment, accountID, filterContext);
|
||||
}
|
||||
if(contentItems!=items && statusForContent.spoilerRevealed){
|
||||
items.addAll(contentItems);
|
||||
@@ -421,29 +424,55 @@ 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)) {
|
||||
new GetSearchResults(quoteURL, GetSearchResults.Type.STATUSES, true, null, 0, 0).setCallback(new Callback<>(){
|
||||
@Override
|
||||
public void onSuccess(SearchResults results){
|
||||
if (!results.statuses.isEmpty()){
|
||||
status.quote=results.statuses.get(0);
|
||||
fragment.updateStatusWithQuote(status);
|
||||
}
|
||||
}
|
||||
// account may be null for scheduled posts
|
||||
if (!UiUtils.looksLikeFediverseUrl(quoteURL))
|
||||
return;
|
||||
|
||||
@Override
|
||||
public void onError(ErrorResponse error){
|
||||
Log.w("StatusDisplayItem", "onError: failed to find quote status with URL: " + quoteURL + " " + error);
|
||||
}
|
||||
}).exec(accountID);
|
||||
}
|
||||
new GetSearchResults(quoteURL, GetSearchResults.Type.STATUSES, true, null, 0, 0).setCallback(new Callback<>(){
|
||||
@Override
|
||||
public void onSuccess(SearchResults results){
|
||||
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
|
||||
public void onError(ErrorResponse error){
|
||||
Log.w("StatusDisplayItem", "onError: failed to find quote status with URL: " + quoteURL + " " + error);
|
||||
}
|
||||
}).exec(accountID);
|
||||
}
|
||||
|
||||
public enum Type{
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -2,14 +2,8 @@ package org.joinmastodon.android.ui.sheets;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Typeface;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.model.Account;
|
||||
@@ -17,6 +11,7 @@ import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||
import org.joinmastodon.android.ui.views.M3Switch;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
@@ -44,10 +39,10 @@ public class MuteAccountConfirmationSheet extends AccountRestrictionConfirmation
|
||||
addRow(R.drawable.ic_fluent_alert_off_24_regular, R.string.mo_mute_notifications, m3Switch);
|
||||
|
||||
// add mute duration (Moshidon)
|
||||
secondaryBtn.setVisibility(View.VISIBLE);
|
||||
secondaryBtn.setOnClickListener(v->getMuteDurationDialog(context, muteDuration, secondaryBtn).show());
|
||||
secondaryBtn.setText(R.string.sk_duration_indefinite);
|
||||
secondaryBtn.setTypeface(null, Typeface.BOLD_ITALIC);
|
||||
Button muteDurationBtn=new Button(getContext());
|
||||
muteDurationBtn.setOnClickListener(v->getMuteDurationDialog(context, muteDuration, muteDurationBtn).show());
|
||||
muteDurationBtn.setText(R.string.sk_duration_indefinite);
|
||||
addRow(R.drawable.ic_fluent_clock_20_regular, R.string.sk_mute_label, muteDurationBtn);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -55,6 +50,15 @@ public class MuteAccountConfirmationSheet extends AccountRestrictionConfirmation
|
||||
M3AlertDialogBuilder builder=new M3AlertDialogBuilder(context);
|
||||
builder.setTitle(R.string.sk_mute_label);
|
||||
builder.setIcon(R.drawable.ic_fluent_clock_20_regular);
|
||||
List<Duration> durations =List.of(Duration.ZERO,
|
||||
Duration.ofMinutes(5),
|
||||
Duration.ofMinutes(30),
|
||||
Duration.ofHours(1),
|
||||
Duration.ofHours(6),
|
||||
Duration.ofDays(1),
|
||||
Duration.ofDays(3),
|
||||
Duration.ofDays(7),
|
||||
Duration.ofDays(7));
|
||||
|
||||
String[] choices = {context.getString(R.string.sk_duration_indefinite),
|
||||
context.getString(R.string.sk_duration_minutes_5),
|
||||
@@ -65,35 +69,14 @@ public class MuteAccountConfirmationSheet extends AccountRestrictionConfirmation
|
||||
context.getString(R.string.sk_duration_days_3),
|
||||
context.getString(R.string.sk_duration_days_7)};
|
||||
|
||||
builder.setSingleChoiceItems(choices, 0, (dialog, which) -> {});
|
||||
builder.setSingleChoiceItems(choices, durations.indexOf(muteDuration.get()), (dialog, which) -> {});
|
||||
|
||||
builder.setPositiveButton(R.string.ok, (dialog, which)->{
|
||||
int selected = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
|
||||
if(selected==0){
|
||||
muteDuration.set(Duration.ZERO);
|
||||
}else if(selected==1){
|
||||
muteDuration.set(Duration.ofMinutes(5));
|
||||
}else if(selected==2){
|
||||
muteDuration.set(Duration.ofMinutes(30));
|
||||
}else if(selected==3){
|
||||
muteDuration.set(Duration.ofHours(1));
|
||||
}else if(selected==4){
|
||||
muteDuration.set(Duration.ofHours(6));
|
||||
}else if(selected==5){
|
||||
muteDuration.set(Duration.ofDays(1));
|
||||
}else if(selected==6){
|
||||
muteDuration.set(Duration.ofDays(3));
|
||||
}else if(selected==7){
|
||||
muteDuration.set(Duration.ofDays(7));
|
||||
}
|
||||
if(selected >= 0 && selected <= 7){
|
||||
button.setText(choices[selected]);
|
||||
} else {
|
||||
Toast.makeText(context, "" + selected, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
muteDuration.set(durations.get(selected));
|
||||
button.setText(choices[selected]);
|
||||
});
|
||||
|
||||
builder.setNegativeButton(R.string.cancel, ((dialogInterface, i) -> {}));
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ public class HtmlParser{
|
||||
String href=el.attr("href");
|
||||
LinkSpan.Type linkType;
|
||||
String text=el.text();
|
||||
if(el.hasClass("hashtag") || text.startsWith("#")){
|
||||
if(!TextUtils.isEmpty(text) && (el.hasClass("hashtag") || text.startsWith("#"))){
|
||||
// MOSHIDON: we have slightly refactored this so that the hashtags properly work in akkoma
|
||||
// TODO: upstream this
|
||||
linkType=LinkSpan.Type.HASHTAG;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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>
|
||||
3
mastodon/src/main/res/drawable/ic_gnome_logo.xml
Normal file
3
mastodon/src/main/res/drawable/ic_gnome_logo.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -2,20 +2,20 @@
|
||||
<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>
|
||||
<string name="sk_visibility_unlisted">Minder openbaar</string>
|
||||
<string name="sk_image_description">Afbeelding beschrijving</string>
|
||||
<string name="sk_image_description">Afbeeldingbeschrijving</string>
|
||||
<string name="sk_settings_show_replies">Reacties weergeven</string>
|
||||
<string name="sk_settings_show_boosts">Boosts weergeven</string>
|
||||
<string name="sk_settings_load_new_posts">Automatisch nieuwe berichten laden</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,29 +37,29 @@
|
||||
<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">Bericht voorkeuren</string>
|
||||
<string name="sk_settings_posting">Berichtvoorkeuren</string>
|
||||
<string name="sk_settings_filters">Filters instellen</string>
|
||||
<string name="sk_settings_auth">Beveiliging instellen</string>
|
||||
<string name="sk_settings_rules">Regels</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>
|
||||
@@ -16,6 +16,7 @@
|
||||
<string name="mo_settings_app_version" translatable="false">Moshidon v%1$s (%2$d)</string>
|
||||
|
||||
<string name="mo_personal_note">Add a note about this profile</string>
|
||||
<string name="mo_personal_note_saved">Note saved</string>
|
||||
<string name="mo_personal_note_confirm">Confirm changes to note</string>
|
||||
<string name="mo_personal_note_update_failed">Failed to save note</string>
|
||||
<string name="mo_settings_contribute">Contribute to Moshidon</string>
|
||||
@@ -141,4 +142,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>
|
||||
@@ -206,7 +206,13 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
|
||||
if(state==UpdateState.DOWNLOADING)
|
||||
throw new IllegalStateException();
|
||||
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
|
||||
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
|
||||
|
||||
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()))
|
||||
|
||||
4
metadata/en-US/changelogs/107.txt
Normal file
4
metadata/en-US/changelogs/107.txt
Normal 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
|
||||
2
metadata/en-US/changelogs/108.txt
Normal file
2
metadata/en-US/changelogs/108.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Fixed a bunch of crashes
|
||||
- Small bug fixes and improvements
|
||||
9
metadata/es/changelogs/106.txt
Normal file
9
metadata/es/changelogs/106.txt
Normal 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.
|
||||
1
metadata/fr/short_description.txt
Normal file
1
metadata/fr/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Mastodon pour Android, mais avec Material You et plus de fonctionnalités
|
||||
9
metadata/lt/changelogs/106.txt
Normal file
9
metadata/lt/changelogs/106.txt
Normal 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.
|
||||
3
metadata/lt/changelogs/96.txt
Normal file
3
metadata/lt/changelogs/96.txt
Normal 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
|
||||
3
metadata/lt/changelogs/97.txt
Normal file
3
metadata/lt/changelogs/97.txt
Normal 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
|
||||
6
metadata/lt/changelogs/99.txt
Normal file
6
metadata/lt/changelogs/99.txt
Normal 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
|
||||
9
metadata/nl-NL/changelogs/101.txt
Normal file
9
metadata/nl-NL/changelogs/101.txt
Normal 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
|
||||
11
metadata/nl-NL/changelogs/102.txt
Normal file
11
metadata/nl-NL/changelogs/102.txt
Normal 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
|
||||
9
metadata/nl-NL/changelogs/103.txt
Normal file
9
metadata/nl-NL/changelogs/103.txt
Normal 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
|
||||
2
metadata/nl-NL/changelogs/104.txt
Normal file
2
metadata/nl-NL/changelogs/104.txt
Normal 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
|
||||
3
metadata/nl-NL/changelogs/105.txt
Normal file
3
metadata/nl-NL/changelogs/105.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Merged upstream (2.3.0)
|
||||
- Added remote fetching for status history
|
||||
- Fixed a bunch of bugs
|
||||
9
metadata/nl-NL/changelogs/106.txt
Normal file
9
metadata/nl-NL/changelogs/106.txt
Normal 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
|
||||
6
metadata/nl-NL/changelogs/110.txt
Normal file
6
metadata/nl-NL/changelogs/110.txt
Normal 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
|
||||
6
metadata/nl-NL/changelogs/59.txt
Normal file
6
metadata/nl-NL/changelogs/59.txt
Normal 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
|
||||
5
metadata/nl-NL/changelogs/61.txt
Normal file
5
metadata/nl-NL/changelogs/61.txt
Normal 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)
|
||||
11
metadata/nl-NL/changelogs/62.txt
Normal file
11
metadata/nl-NL/changelogs/62.txt
Normal 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
|
||||
6
metadata/nl-NL/changelogs/63.txt
Normal file
6
metadata/nl-NL/changelogs/63.txt
Normal 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
|
||||
10
metadata/nl-NL/changelogs/65.txt
Normal file
10
metadata/nl-NL/changelogs/65.txt
Normal 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
|
||||
10
metadata/nl-NL/changelogs/67.txt
Normal file
10
metadata/nl-NL/changelogs/67.txt
Normal 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
|
||||
9
metadata/nl-NL/changelogs/73.txt
Normal file
9
metadata/nl-NL/changelogs/73.txt
Normal 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
|
||||
9
metadata/nl-NL/changelogs/74.txt
Normal file
9
metadata/nl-NL/changelogs/74.txt
Normal 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
|
||||
6
metadata/nl-NL/changelogs/76.txt
Normal file
6
metadata/nl-NL/changelogs/76.txt
Normal 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
|
||||
4
metadata/nl-NL/changelogs/77.txt
Normal file
4
metadata/nl-NL/changelogs/77.txt
Normal 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
|
||||
1
metadata/nl-NL/changelogs/78.txt
Normal file
1
metadata/nl-NL/changelogs/78.txt
Normal file
@@ -0,0 +1 @@
|
||||
Removing the toot dividers on the main timeline! Its also configurable.
|
||||
1
metadata/nl-NL/changelogs/79.txt
Normal file
1
metadata/nl-NL/changelogs/79.txt
Normal file
@@ -0,0 +1 @@
|
||||
Adding a donate button!
|
||||
1
metadata/nl-NL/changelogs/80.txt
Normal file
1
metadata/nl-NL/changelogs/80.txt
Normal file
@@ -0,0 +1 @@
|
||||
Now adding an optional toggle for bringing the publish button to a more reachable position! It's the default now!
|
||||
2
metadata/nl-NL/changelogs/81.txt
Normal file
2
metadata/nl-NL/changelogs/81.txt
Normal 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
|
||||
9
metadata/nl-NL/changelogs/82.txt
Normal file
9
metadata/nl-NL/changelogs/82.txt
Normal 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
|
||||
4
metadata/nl-NL/changelogs/83.txt
Normal file
4
metadata/nl-NL/changelogs/83.txt
Normal 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!
|
||||
3
metadata/nl-NL/changelogs/84.txt
Normal file
3
metadata/nl-NL/changelogs/84.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Release 84 fixes a few bugs, such as:
|
||||
- Login callback not working
|
||||
- Updating german translation. Thanks @DanTobi!
|
||||
7
metadata/nl-NL/changelogs/85.txt
Normal file
7
metadata/nl-NL/changelogs/85.txt
Normal 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
|
||||
4
metadata/nl-NL/changelogs/86.txt
Normal file
4
metadata/nl-NL/changelogs/86.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
New things for release 86:
|
||||
- Ability to stack notifications, ie: having multiple notifications;
|
||||
- Introducing Announcements;
|
||||
- Many minor UI fixes.
|
||||
5
metadata/nl-NL/changelogs/87.txt
Normal file
5
metadata/nl-NL/changelogs/87.txt
Normal 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
|
||||
6
metadata/nl-NL/changelogs/88.txt
Normal file
6
metadata/nl-NL/changelogs/88.txt
Normal 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
|
||||
1
metadata/nl-NL/changelogs/89.txt
Normal file
1
metadata/nl-NL/changelogs/89.txt
Normal 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.
|
||||
5
metadata/nl-NL/changelogs/91.txt
Normal file
5
metadata/nl-NL/changelogs/91.txt
Normal 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
|
||||
4
metadata/nl-NL/changelogs/92.txt
Normal file
4
metadata/nl-NL/changelogs/92.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
New things for release 92:
|
||||
- Better filters
|
||||
- New profile page layout
|
||||
- A bunch of minor tweaks and improvements
|
||||
5
metadata/nl-NL/changelogs/94.txt
Normal file
5
metadata/nl-NL/changelogs/94.txt
Normal 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
|
||||
3
metadata/nl-NL/changelogs/95.txt
Normal file
3
metadata/nl-NL/changelogs/95.txt
Normal 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
|
||||
3
metadata/nl-NL/changelogs/96.txt
Normal file
3
metadata/nl-NL/changelogs/96.txt
Normal 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
|
||||
3
metadata/nl-NL/changelogs/97.txt
Normal file
3
metadata/nl-NL/changelogs/97.txt
Normal 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
|
||||
1
metadata/nl-NL/changelogs/98.txt
Normal file
1
metadata/nl-NL/changelogs/98.txt
Normal file
@@ -0,0 +1 @@
|
||||
Initial play store release
|
||||
6
metadata/nl-NL/changelogs/99.txt
Normal file
6
metadata/nl-NL/changelogs/99.txt
Normal 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
|
||||
16
metadata/nl-NL/full_description.txt
Normal file
16
metadata/nl-NL/full_description.txt
Normal 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!
|
||||
@@ -1,3 +1,16 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven {
|
||||
url "https://www.jitpack.io"
|
||||
content {
|
||||
includeModule 'com.github.UnifiedPush', 'android-connector'
|
||||
}
|
||||
}
|
||||
mavenLocal()
|
||||
}
|
||||
}
|
||||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||
repositories {
|
||||
|
||||
Reference in New Issue
Block a user