Compare commits
26 Commits
v2.1.6+for
...
v2.1.6+for
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd3de97d55 | ||
|
|
4853a25710 | ||
|
|
eba9a1da7b | ||
|
|
068c62b060 | ||
|
|
5d7f06eba0 | ||
|
|
fed9dec33a | ||
|
|
7973914a5f | ||
|
|
35efb3f047 | ||
|
|
0a4ed50904 | ||
|
|
002c66174a | ||
|
|
22aac3d943 | ||
|
|
872f47305a | ||
|
|
75d5332411 | ||
|
|
035da8a517 | ||
|
|
4c2c877d41 | ||
|
|
53afc120f3 | ||
|
|
a75ce70615 | ||
|
|
4a3b948760 | ||
|
|
f81283c892 | ||
|
|
7eae879037 | ||
|
|
1b0ce5d893 | ||
|
|
c17745368d | ||
|
|
e78b518654 | ||
|
|
55a8634be2 | ||
|
|
ac891eea53 | ||
|
|
74fa2a3081 |
@@ -15,8 +15,8 @@ android {
|
||||
applicationId "org.joinmastodon.android.sk"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 100
|
||||
versionName "2.1.6+fork.100"
|
||||
versionCode 102
|
||||
versionName "2.1.6+fork.102"
|
||||
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']
|
||||
}
|
||||
|
||||
@@ -1,56 +1,43 @@
|
||||
13bells.com
|
||||
1611.social
|
||||
4aem.com
|
||||
5dollah.click
|
||||
adachi.party
|
||||
anime.website
|
||||
adtension.com
|
||||
annihilation.social
|
||||
anon-kenkai.com
|
||||
asbestos.cafe
|
||||
bae.st
|
||||
bajax.us
|
||||
banepo.st
|
||||
baraag.net
|
||||
bassam.social
|
||||
battlepenguin.video
|
||||
beefyboys.win
|
||||
beepboop.ga
|
||||
berserker.town
|
||||
bikeshed.party
|
||||
boks.moe
|
||||
boymoder.biz
|
||||
brainsoap.net
|
||||
breastmilk.club
|
||||
brighteon.social
|
||||
bungle.online
|
||||
cachapa.xyz
|
||||
canary.fedinuke.example.com
|
||||
catgirl.life
|
||||
cawfee.club
|
||||
childlove.space
|
||||
clew.lol
|
||||
clubcyberia.co
|
||||
collapsitarian.io
|
||||
comfyboy.club
|
||||
contrapointsfan.club
|
||||
crucible.world
|
||||
cum.camp
|
||||
cum.salon
|
||||
darknight-coffee.org
|
||||
decayable.ink
|
||||
dembased.xyz
|
||||
desupost.soy
|
||||
detroitriotcity.com
|
||||
eatthebugs.social
|
||||
djsumdog.com
|
||||
eientei.org
|
||||
elementality.org
|
||||
eveningzoo.club
|
||||
firedragonstudios.com
|
||||
firefaithfellowship.com
|
||||
fluf.club
|
||||
foxfam.club
|
||||
freak.university
|
||||
freeatlantis.com
|
||||
freedomstrike.org
|
||||
freesoftwareextremist.com
|
||||
freespeech.group
|
||||
freespeechextremist.com
|
||||
freetalklive.com
|
||||
froth.zone
|
||||
fulltermprivacy.com
|
||||
gameliberty.club
|
||||
gearlandia.haus
|
||||
genderheretics.xyz
|
||||
@@ -59,42 +46,34 @@ gleasonator.com
|
||||
glee.li
|
||||
glindr.org
|
||||
goyim.app
|
||||
goyslop.cafe
|
||||
h5q.net
|
||||
haeder.net
|
||||
handholding.io
|
||||
hitchhiker.social
|
||||
hunk.city
|
||||
iddqd.social
|
||||
intkos.link
|
||||
justicewarrior.social
|
||||
kawa-kun.com
|
||||
kitsunemimi.club
|
||||
kiwifarms.cc
|
||||
kompost.cz
|
||||
kurosawa.moe
|
||||
kyaruc.moe
|
||||
leafposter.club
|
||||
leftychan.net
|
||||
lewdieheaven.com
|
||||
liberdon.com
|
||||
ligma.pro
|
||||
lolicon.rocks
|
||||
lolison.network
|
||||
lolison.top
|
||||
lovingexpressions.net
|
||||
mahodou.moe
|
||||
makemysarcophagus.com
|
||||
maladaptive.art
|
||||
marsey.moe
|
||||
masochi.st
|
||||
mastinator.com
|
||||
merovingian.club
|
||||
midwaytrades.com
|
||||
mirr0r.city
|
||||
moa.st
|
||||
morale.ch
|
||||
mouse.services
|
||||
mugicha.club
|
||||
narrativerry.xyz
|
||||
natehiggers.online
|
||||
neckbeard.xyz
|
||||
needs.vodka
|
||||
neenster.org
|
||||
nicecrew.digital
|
||||
@@ -103,18 +82,18 @@ noagendasocial.com
|
||||
noagendasocial.nl
|
||||
noagendatube.com
|
||||
nobodyhasthe.biz
|
||||
nukem.biz
|
||||
obo.sh
|
||||
norwoodzero.net
|
||||
nyanide.com
|
||||
onionfarms.org
|
||||
pawlicker.com
|
||||
pawoo.net
|
||||
pedo.school
|
||||
peervideo.club
|
||||
piazza.today
|
||||
pibvt.net
|
||||
pieville.net
|
||||
pisskey.io
|
||||
plagu.ee
|
||||
pmth.us
|
||||
poa.st
|
||||
poast.org
|
||||
poast.tv
|
||||
@@ -123,17 +102,18 @@ prospeech.space
|
||||
quodverum.com
|
||||
r18.social
|
||||
rakket.app
|
||||
rapemeat.express
|
||||
rapemeat.solutions
|
||||
rdrama.cc
|
||||
rayci.st
|
||||
rebelbase.site
|
||||
retardedniggers.forsale
|
||||
rojogato.com
|
||||
ryona.agency
|
||||
sad.cab
|
||||
schwartzwelt.xyz
|
||||
seal.cafe
|
||||
shaw.app
|
||||
shigusegubu.club
|
||||
shitpost.cloud
|
||||
shota.house
|
||||
shortstacksran.ch
|
||||
silliness.observer
|
||||
skinheads.eu
|
||||
skinheads.io
|
||||
@@ -148,23 +128,20 @@ sneed.social
|
||||
sonichu.com
|
||||
spinster.xyz
|
||||
springbo.cc
|
||||
starnix.network
|
||||
strelizia.net
|
||||
syspxl.xyz
|
||||
tastingtraffic.net
|
||||
teci.world
|
||||
theapex.social
|
||||
thechimp.zone
|
||||
thenobody.club
|
||||
thepostearthdestination.com
|
||||
tkammer.de
|
||||
trumpislovetrumpis.life
|
||||
truthsocial.co.in
|
||||
urchan.org
|
||||
usualsuspects.lol
|
||||
varishangout.net
|
||||
whinge.house
|
||||
whinge.town
|
||||
wideboys.org
|
||||
vtuberfan.social
|
||||
wolfgirl.bar
|
||||
xn--p1abe3d.xn--80asehdb
|
||||
yggdrasil.social
|
||||
youjo.love
|
||||
zztails.gay
|
||||
|
||||
@@ -97,7 +97,7 @@ public class PushSubscriptionManager{
|
||||
deviceToken=getPrefs().getString("deviceToken", null);
|
||||
int tokenVersion=getPrefs().getInt("version", 0);
|
||||
if(!TextUtils.isEmpty(deviceToken) && tokenVersion==BuildConfig.VERSION_CODE){
|
||||
registerAllAccountsForPush(true); // TODO: revert this before release
|
||||
registerAllAccountsForPush(false);
|
||||
return;
|
||||
}
|
||||
Log.i(TAG, "tryRegisterFCM: no token found or app was updated. Trying to get push token...");
|
||||
|
||||
@@ -13,7 +13,7 @@ import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class PleromaMarkNotificationsRead extends MastodonAPIRequest<List<Notification>> {
|
||||
private String maxID;
|
||||
private final String maxID;
|
||||
public PleromaMarkNotificationsRead(String maxID) {
|
||||
super(HttpMethod.POST, "/pleroma/notifications/read", new TypeToken<>(){});
|
||||
this.maxID = maxID;
|
||||
|
||||
@@ -295,7 +295,7 @@ public class AccountSession{
|
||||
// don't hide own posts in own profile
|
||||
if(statusIsOnOwnProfile(s, profile))
|
||||
return false;
|
||||
if(isFilteredType(s))
|
||||
if(isFilteredType(s) && (context == FilterContext.HOME || context == FilterContext.PUBLIC))
|
||||
return true;
|
||||
// Even with server-side filters, clients are expected to remove statuses that match a filter that hides them
|
||||
if(localPreferences.serverSideFiltersSupported){
|
||||
|
||||
@@ -52,14 +52,14 @@ public class AccountTimelineFragment extends StatusListFragment{
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
currentRequest=new GetAccountStatuses(user.id, offset>0 ? getMaxID() : null, null, count, filter)
|
||||
currentRequest=new GetAccountStatuses(user.id, getMaxID(), null, count, filter)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
boolean more=applyMaxID(result);
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext(), user);
|
||||
onDataLoaded(result, !empty);
|
||||
onDataLoaded(result, more);
|
||||
}
|
||||
})
|
||||
.exec(accountID);
|
||||
|
||||
@@ -97,7 +97,7 @@ public class AnnouncementsFragment extends BaseStatusListFragment<Announcement>
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Announcement> result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
|
||||
// get unread items first
|
||||
List<Announcement> data = result.stream().filter(a -> !a.read).collect(toList());
|
||||
|
||||
@@ -89,6 +89,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
protected Rect tmpRect=new Rect();
|
||||
protected TypedObjectPool<MediaGridStatusDisplayItem.GridItemType, MediaAttachmentViewController> attachmentViewsPool=new TypedObjectPool<>(this::makeNewMediaAttachmentView);
|
||||
protected boolean currentlyScrolling;
|
||||
protected String maxID;
|
||||
|
||||
public BaseStatusListFragment(){
|
||||
super(20);
|
||||
@@ -155,6 +156,8 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
}
|
||||
|
||||
protected String getMaxID(){
|
||||
if(refreshing) return null;
|
||||
if(maxID!=null) return maxID;
|
||||
if(!preloadedData.isEmpty())
|
||||
return preloadedData.get(preloadedData.size()-1).getID();
|
||||
else if(!data.isEmpty())
|
||||
@@ -163,6 +166,12 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
return null;
|
||||
}
|
||||
|
||||
protected boolean applyMaxID(List<Status> result){
|
||||
boolean empty=result.isEmpty();
|
||||
if(!empty) maxID=result.get(result.size()-1).id;
|
||||
return !empty;
|
||||
}
|
||||
|
||||
protected abstract List<StatusDisplayItem> buildDisplayItems(T s);
|
||||
protected abstract void addAccountToKnown(T s);
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public class BookmarkedStatusListFragment extends StatusListFragment{
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(HeaderPaginationList<Status> result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if(result.nextPageUri!=null)
|
||||
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
|
||||
else
|
||||
|
||||
@@ -169,7 +169,7 @@ public class EditTimelinesFragment extends MastodonRecyclerFragment<TimelineDefi
|
||||
}
|
||||
|
||||
private void updateOptionsMenu() {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
optionsMenu.clear();
|
||||
timelineByMenuItem.clear();
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ public class FavoritedStatusListFragment extends StatusListFragment{
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(HeaderPaginationList<Status> result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if(result.nextPageUri!=null)
|
||||
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
|
||||
else
|
||||
|
||||
@@ -83,7 +83,7 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment<FollowR
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(HeaderPaginationList<Account> result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if(result.nextPageUri!=null)
|
||||
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
|
||||
else
|
||||
|
||||
@@ -56,7 +56,7 @@ public class FollowedHashtagsFragment extends MastodonRecyclerFragment<Hashtag>
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(HeaderPaginationList<Hashtag> result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if(result.nextPageUri!=null)
|
||||
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
|
||||
else
|
||||
|
||||
@@ -91,14 +91,14 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
currentRequest=new GetHashtagTimeline(hashtagName, offset==0 ? null : getMaxID(), null, count, any, all, none, localOnly, getLocalPrefs().timelineReplyVisibility)
|
||||
currentRequest=new GetHashtagTimeline(hashtagName, getMaxID(), null, count, any, all, none, localOnly, getLocalPrefs().timelineReplyVisibility)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
boolean more=applyMaxID(result);
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
|
||||
onDataLoaded(result, !empty);
|
||||
onDataLoaded(result, more);
|
||||
}
|
||||
})
|
||||
.exec(accountID);
|
||||
|
||||
@@ -287,7 +287,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
new GetAnnouncements(false).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(List<Announcement> result) {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if (result.stream().anyMatch(a -> !a.read)) {
|
||||
announcementsBadged = true;
|
||||
announcements.setVisible(false);
|
||||
@@ -381,7 +381,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
}
|
||||
|
||||
private void updateOverflowMenu() {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
Menu m = overflowPopup.getMenu();
|
||||
m.clear();
|
||||
overflowPopup.inflate(R.menu.home_overflow);
|
||||
|
||||
@@ -26,6 +26,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.grishka.appkit.api.Callback;
|
||||
import me.grishka.appkit.api.ErrorResponse;
|
||||
@@ -137,11 +138,13 @@ public class HomeTimelineFragment extends StatusListFragment {
|
||||
Status last=result.get(result.size()-1);
|
||||
List<Status> toAdd;
|
||||
if(!data.isEmpty() && last.id.equals(data.get(0).id)){ // This part intersects with the existing one
|
||||
toAdd=result.subList(0, result.size()-1); // Remove the already known last post
|
||||
toAdd=new ArrayList<>(result.subList(0, result.size()-1)); // Remove the already known last post
|
||||
}else{
|
||||
result.get(result.size()-1).hasGapAfter=true;
|
||||
toAdd=result;
|
||||
}
|
||||
List<String> existingIds=data.stream().map(Status::getID).collect(Collectors.toList());
|
||||
toAdd.removeIf(s->existingIds.contains(s.getID()));
|
||||
List<Status> toAddUnfiltered=new ArrayList<>(toAdd);
|
||||
AccountSessionManager.get(accountID).filterStatuses(toAdd, getFilterContext());
|
||||
if(!toAdd.isEmpty()){
|
||||
|
||||
@@ -62,7 +62,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
|
||||
new GetList(listID).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(ListTimeline listTimeline) {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
// TODO: save updated info
|
||||
if (!listTimeline.title.equals(listTitle)) setTitle(listTimeline.title);
|
||||
if (listTimeline.repliesPolicy != null && !listTimeline.repliesPolicy.equals(repliesPolicy)) {
|
||||
@@ -100,7 +100,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
|
||||
new UpdateList(listID, newTitle, editor.isExclusive(), editor.getRepliesPolicy()).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(ListTimeline list) {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
setTitle(list.title);
|
||||
listTitle = list.title;
|
||||
repliesPolicy = list.repliesPolicy;
|
||||
@@ -133,14 +133,14 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count) {
|
||||
currentRequest=new GetListTimeline(listID, offset==0 ? null : getMaxID(), null, count, null, getLocalPrefs().timelineReplyVisibility)
|
||||
currentRequest=new GetListTimeline(listID, getMaxID(), null, count, null, getLocalPrefs().timelineReplyVisibility)
|
||||
.setCallback(new SimpleCallback<>(this) {
|
||||
@Override
|
||||
public void onSuccess(List<Status> result) {
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
boolean more=applyMaxID(result);
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
|
||||
onDataLoaded(result, !empty);
|
||||
onDataLoaded(result, more);
|
||||
}
|
||||
})
|
||||
.exec(accountID);
|
||||
|
||||
@@ -140,7 +140,7 @@ public class ListsFragment extends MastodonRecyclerFragment<ListTimeline> implem
|
||||
.setCallback(new SimpleCallback<>(this) {
|
||||
@Override
|
||||
public void onSuccess(List<ListTimeline> lists) {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
for (ListTimeline l : lists) userInListBefore.put(l.id, true);
|
||||
userInList.putAll(userInListBefore);
|
||||
if (profileAccountId == null || !lists.isEmpty()) onDataLoaded(lists, false);
|
||||
@@ -149,7 +149,7 @@ public class ListsFragment extends MastodonRecyclerFragment<ListTimeline> implem
|
||||
currentRequest=new GetLists().setCallback(new SimpleCallback<>(ListsFragment.this) {
|
||||
@Override
|
||||
public void onSuccess(List<ListTimeline> allLists) {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
List<ListTimeline> newLists = new ArrayList<>();
|
||||
for (ListTimeline l : allLists) {
|
||||
if (lists.stream().noneMatch(e -> e.id.equals(l.id))) newLists.add(l);
|
||||
|
||||
@@ -254,7 +254,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
|
||||
new GetFollowRequests(null, 1).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(HeaderPaginationList<Account> accounts) {
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
getToolbar().getMenu().findItem(R.id.follow_requests).setVisible(!accounts.isEmpty());
|
||||
}
|
||||
|
||||
|
||||
@@ -482,7 +482,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(Account result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
onAccountLoaded(result);
|
||||
}
|
||||
})
|
||||
@@ -894,7 +894,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
}
|
||||
|
||||
private void updateRelationship(){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
invalidateOptionsMenu();
|
||||
actionButton.setVisibility(View.VISIBLE);
|
||||
notifyButton.setVisibility(relationship.following ? View.VISIBLE : View.GONE);
|
||||
@@ -1191,7 +1191,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
savingEdits=false;
|
||||
account=result;
|
||||
AccountSessionManager.getInstance().updateAccountInfo(accountID, account);
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
exitEditMode();
|
||||
setActionProgressVisible(false);
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
|
||||
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
|
||||
else
|
||||
nextMaxID=null;
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
onDataLoaded(result, nextMaxID!=null);
|
||||
}
|
||||
})
|
||||
|
||||
@@ -83,7 +83,7 @@ public abstract class BaseAccountListFragment extends MastodonRecyclerFragment<A
|
||||
for(Relationship rel:result){
|
||||
relationships.put(rel.id, rel);
|
||||
}
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if(list==null)
|
||||
return;
|
||||
for(int i=0;i<list.getChildCount();i++){
|
||||
|
||||
@@ -133,7 +133,7 @@ public abstract class PaginatedAccountListFragment<T> extends BaseAccountListFra
|
||||
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
|
||||
else
|
||||
nextMaxID=null;
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
List<AccountViewModel> items = result.stream()
|
||||
.filter(a -> d.size() > 1000 || d.stream()
|
||||
.noneMatch(i -> i.account.url.equals(a.url)))
|
||||
|
||||
@@ -19,7 +19,6 @@ import me.grishka.appkit.utils.MergeRecyclerAdapter;
|
||||
|
||||
public class BubbleTimelineFragment extends StatusListFragment {
|
||||
private DiscoverInfoBannerHelper bannerHelper;
|
||||
private String maxID;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState){
|
||||
@@ -35,15 +34,14 @@ public class BubbleTimelineFragment extends StatusListFragment {
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
currentRequest=new GetBubbleTimeline(refreshing ? null : maxID, count, getLocalPrefs().timelineReplyVisibility)
|
||||
currentRequest=new GetBubbleTimeline(getMaxID(), count, getLocalPrefs().timelineReplyVisibility)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
if(!empty) maxID=result.get(result.size()-1).id;
|
||||
boolean more=applyMaxID(result);
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
|
||||
onDataLoaded(result, !empty);
|
||||
onDataLoaded(result, more);
|
||||
bannerHelper.onBannerBecameVisible();
|
||||
}
|
||||
})
|
||||
|
||||
@@ -77,7 +77,7 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment<DiscoverA
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<FollowSuggestion> result){
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
onDataLoaded(result.stream().map(fs->new AccountWrapper(fs.account)).collect(Collectors.toList()), false);
|
||||
loadRelationships();
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment<DiscoverA
|
||||
public void onSuccess(List<Relationship> result){
|
||||
relationshipsRequest=null;
|
||||
relationships=result.stream().collect(Collectors.toMap(rel->rel.id, Function.identity()));
|
||||
if (getActivity() == null) return;
|
||||
if(getActivity()==null) return;
|
||||
if(list==null)
|
||||
return;
|
||||
for(int i=0;i<list.getChildCount();i++){
|
||||
|
||||
@@ -18,6 +18,7 @@ import me.grishka.appkit.utils.MergeRecyclerAdapter;
|
||||
|
||||
public class DiscoverPostsFragment extends StatusListFragment{
|
||||
private DiscoverInfoBannerHelper bannerHelper;
|
||||
private int offset;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState){
|
||||
@@ -26,13 +27,15 @@ public class DiscoverPostsFragment extends StatusListFragment{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
protected void doLoadData(int o, int count){
|
||||
if(refreshing) offset=0;
|
||||
currentRequest=new GetTrendingStatuses(offset, count)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
offset+=result.size();
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
|
||||
onDataLoaded(result, !empty);
|
||||
bannerHelper.onBannerBecameVisible();
|
||||
|
||||
@@ -29,15 +29,14 @@ public class FederatedTimelineFragment extends StatusListFragment{
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
currentRequest=new GetPublicTimeline(false, false, refreshing ? null : maxID, count, getLocalPrefs().timelineReplyVisibility)
|
||||
currentRequest=new GetPublicTimeline(false, false, getMaxID(), count, getLocalPrefs().timelineReplyVisibility)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
if(!empty) maxID=result.get(result.size()-1).id;
|
||||
boolean more=applyMaxID(result);
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
|
||||
onDataLoaded(result, !empty);
|
||||
onDataLoaded(result, more);
|
||||
bannerHelper.onBannerBecameVisible();
|
||||
}
|
||||
})
|
||||
|
||||
@@ -29,15 +29,14 @@ public class LocalTimelineFragment extends StatusListFragment{
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
currentRequest=new GetPublicTimeline(true, false, refreshing ? null : maxID, count, getLocalPrefs().timelineReplyVisibility)
|
||||
currentRequest=new GetPublicTimeline(true, false, getMaxID(), count, getLocalPrefs().timelineReplyVisibility)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
if(getActivity()==null) return;
|
||||
boolean empty=result.isEmpty();
|
||||
if(!empty) maxID=result.get(result.size()-1).id;
|
||||
boolean more=applyMaxID(result);
|
||||
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
|
||||
onDataLoaded(result, !empty);
|
||||
onDataLoaded(result, more);
|
||||
bannerHelper.onBannerBecameVisible();
|
||||
}
|
||||
})
|
||||
|
||||
@@ -83,7 +83,7 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
currentRequest=new GetAccountStatuses(reportAccount.id, offset>0 ? getMaxID() : null, null, count, GetAccountStatuses.Filter.OWN_POSTS_AND_REPLIES)
|
||||
currentRequest=new GetAccountStatuses(reportAccount.id, getMaxID(), null, count, GetAccountStatuses.Filter.OWN_POSTS_AND_REPLIES)
|
||||
.setCallback(new SimpleCallback<>(this){
|
||||
@Override
|
||||
public void onSuccess(List<Status> result){
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -9,7 +9,7 @@
|
||||
<string name="preparing_auth">Valmistellaan todennusta…</string>
|
||||
<string name="finishing_auth">Viimeistellään todennusta…</string>
|
||||
<string name="user_boosted">%s tehosti</string>
|
||||
<string name="in_reply_to">Vastauksessa %s</string>
|
||||
<string name="in_reply_to">Vastaus käyttäjälle %s</string>
|
||||
<string name="notifications">Ilmoitukset</string>
|
||||
<string name="user_followed_you">%s seurasi sinua</string>
|
||||
<string name="user_sent_follow_request">%s lähetti sinulle seurauspyynnön</string>
|
||||
@@ -228,7 +228,7 @@
|
||||
<string name="button_reblog">Tehosta</string>
|
||||
<string name="button_favorite">Suosikki</string>
|
||||
<string name="button_share">Jaa</string>
|
||||
<string name="media_no_description">Kuva ilma kuvausta</string>
|
||||
<string name="media_no_description">Kuva ilman kuvausta</string>
|
||||
<string name="add_media">Lisää mediatiedosto</string>
|
||||
<string name="add_poll">Lisää kysely</string>
|
||||
<string name="emoji">Emoji</string>
|
||||
@@ -240,8 +240,8 @@
|
||||
<string name="followed_user">Seuraat nyt käyttäjää %s</string>
|
||||
<string name="following_user_requested">Käyttäjän %s seuraamista pyydetty</string>
|
||||
<string name="open_in_browser">Avaa selaimessa</string>
|
||||
<string name="hide_boosts_from_user">Piilota käyttäjän @%s tehostukset</string>
|
||||
<string name="show_boosts_from_user">Näytä tehostukset käyttäjältä @%s</string>
|
||||
<string name="hide_boosts_from_user">Piilota käyttäjän %s tehostukset</string>
|
||||
<string name="show_boosts_from_user">Näytä tehostukset käyttäjältä %s</string>
|
||||
<string name="signup_reason">Miksi haluat liittyä?</string>
|
||||
<string name="signup_reason_note">Tämä auttaa meitä arvioimaan hakemustasi.</string>
|
||||
<string name="clear">Tyhjennä</string>
|
||||
@@ -270,11 +270,11 @@
|
||||
<string name="manually_approves_followers">Hyväksyy seuraajat käsin</string>
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<plurals name="x_followers">
|
||||
<item quantity="one">%d seuraaja</item>
|
||||
<item quantity="other">%d seuraajaa</item>
|
||||
<item quantity="one">%,d seuraaja</item>
|
||||
<item quantity="other">%,d seuraajaa</item>
|
||||
</plurals>
|
||||
<plurals name="x_following">
|
||||
<item quantity="one">%d seurattu</item>
|
||||
<item quantity="one">%,d seurattu</item>
|
||||
<item quantity="other">%d seurattua</item>
|
||||
</plurals>
|
||||
<plurals name="x_favorites">
|
||||
@@ -351,7 +351,7 @@
|
||||
<string name="server_filter_region_asia">Aasia</string>
|
||||
<string name="server_filter_region_oceania">Oseania</string>
|
||||
<string name="not_accepting_new_members">Ei hyväksy uusia jäseniä</string>
|
||||
<string name="category_special_interests">Erityiset Kiinnostukset</string>
|
||||
<string name="category_special_interests">Erityiset kiinnostuksen kohteet</string>
|
||||
<string name="signup_passwords_dont_match">Salasanat eivät täsmää</string>
|
||||
<string name="pick_server_for_me">Valitse minulle</string>
|
||||
<string name="profile_add_row">Lisää rivi</string>
|
||||
@@ -385,7 +385,7 @@
|
||||
<string name="signup_or_login">tai</string>
|
||||
<string name="learn_more">Lue lisää</string>
|
||||
<string name="welcome_to_mastodon">Tervetuloa Mastodoniin</string>
|
||||
<string name="welcome_paragraph1">Mastodon on hajautettu sosiaalinen verkosto, joka tarkoittaa sitä, ettei sitä hallitse mikään yksittäinen yritys. Se koostuu monista itsenäisesti ylläpidetyistä palvelimista, jotka on liitetty yhteen.</string>
|
||||
<string name="welcome_paragraph1">Mastodon on hajautettu sosiaalinen verkosto, mikä tarkoittaa sitä, ettei sitä hallitse mikään yksittäinen yritys. Se koostuu monista itsenäisesti ylläpidetyistä palvelimista, jotka on liitetty yhteen.</string>
|
||||
<string name="what_are_servers">Mitä palvelimet ovat?</string>
|
||||
<string name="welcome_paragraph2">Jokainen Mastodon tili isännöi palvelimella - kullakin on omat arvot, säännöt, & ylläpitäjät. Riippumatta siitä, minkä valitset, voit seurata ja olla vuorovaikutuksessa ihmisten kanssa millä tahansa palvelimella.</string>
|
||||
<string name="opening_link">Avataan linkki…</string>
|
||||
@@ -583,11 +583,14 @@
|
||||
<string name="time_hours_ago_short">%dh sitten</string>
|
||||
<string name="time_days_ago_short">%dd sitten</string>
|
||||
<!-- %s is the name of the post language -->
|
||||
<string name="translate_post">Käännetty kielestä %s</string>
|
||||
<string name="translate_post">Käännä kielestä %s</string>
|
||||
<!-- %1$s is the language, %2$s is the name of the translation service -->
|
||||
<string name="post_translated">Käännetty kielestä %1$s käyttäen %2$s</string>
|
||||
<string name="translation_show_original">Näytä alkuperäinen</string>
|
||||
<string name="translation_failed">Käännös epäonnistui. Ehkä järjestelmänvalvoja ei ole ottanut käyttöön käännöksiä tällä palvelimella tai tällä palvelimella on käynnissä vanhempi versio Mastodonista, jossa käännöksiä ei vielä tueta.</string>
|
||||
<string name="settings_privacy">Yksityisyys ja tavoittavuus</string>
|
||||
<string name="settings_discoverable">Nosta profiili ja julkaisut esille löytämisalgoritmeissa</string>
|
||||
<string name="settings_indexable">Sisällytä julkiset julkaisut hakutuloksiin</string>
|
||||
<plurals name="x_participants">
|
||||
<item quantity="one">%d osallistuja</item>
|
||||
<item quantity="other">%d osallistujaa</item>
|
||||
@@ -596,4 +599,5 @@
|
||||
<item quantity="one">%,d viesti tänään</item>
|
||||
<item quantity="other">%,d viestiä tänään</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">Virhe videon toistossa</string>
|
||||
</resources>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="sk_button_react">Reagoi emojilla</string>
|
||||
<string name="sk_again_for_system_keyboard">Järjestelmän näppäimistö seuraavalla painalluksella</string>
|
||||
<string name="sk_enter_emoji_toast">Lisää emoji</string>
|
||||
<string name="sk_enter_emoji_hint">Lisää emoji tai etsi mukautettu emoji</string>
|
||||
<string name="sk_enter_emoji_hint">Lisää emoji tai etsi</string>
|
||||
<string name="sk_mute_label">Kesto</string>
|
||||
<string name="sk_duration_indefinite">Loputon</string>
|
||||
<string name="sk_duration_minutes_5">5 minuuttia</string>
|
||||
@@ -398,7 +398,7 @@
|
||||
<string name="sk_muted_accounts">Hiljennetyt tilit</string>
|
||||
<string name="sk_do_not_show_again">Älä näytä toista kertaa</string>
|
||||
<string name="sk_suicide_helplines_url">https://mieli.fi/tukea-ja-apua/kriisipuhelin/</string>
|
||||
<string name="sk_trending_posts_info_banner">Nämä julkaisut ovat saamassa vetoa tällä palvelimella.</string>
|
||||
<string name="sk_trending_posts_info_banner">Nämä julkaisut ovat saamassa vetoa Fediversumissa.</string>
|
||||
<string name="sk_load_missing_posts_below">Lataa vanhempia julkaisuja</string>
|
||||
<string name="sk_search_suicide_title">Jos tarvitset apua…</string>
|
||||
<plurals name="sk_time_minutes">
|
||||
@@ -406,6 +406,7 @@
|
||||
<item quantity="other">%d minuuttia</item>
|
||||
</plurals>
|
||||
<string name="sk_search_suicide_message">Jos haluat merkin siitä, että elämää kannattaa jatkaa, tämä on se. Jos olet hädässä, voit ottaa yhteyttä paikalliseen kriisipuhelimeen.</string>
|
||||
<string name="sk_trending_links_info_banner">Näistä uutisjutuista keskustellaan palvelimellasi.</string>
|
||||
<string name="sk_trending_links_info_banner">Näistä uutisjutuista keskustellaan Fediversumissa.</string>
|
||||
<string name="sk_post_contains_media">Julkaisussa on mediaa</string>
|
||||
<string name="sk_settings_like_icon">Käytä sydäntä suosikkikuvakkeena</string>
|
||||
</resources>
|
||||
@@ -372,7 +372,7 @@
|
||||
</plurals>
|
||||
<string name="sk_button_react">Réagissez avec des emojis</string>
|
||||
<string name="sk_again_for_system_keyboard">Appuyez à nouveau pour le clavier système</string>
|
||||
<string name="sk_enter_emoji_hint">Tapez un emoji ou recherchez un emoji personnalisé</string>
|
||||
<string name="sk_enter_emoji_hint">Tapez un emoji ou effectuez une recherche</string>
|
||||
<string name="sk_enter_emoji_toast">Veuillez saisir un emoji</string>
|
||||
<plurals name="sk_posts_count_label">
|
||||
<item quantity="one">message</item>
|
||||
@@ -393,14 +393,15 @@
|
||||
<string name="sk_suicide_search_terms">Suicide</string>
|
||||
<string name="sk_search_suicide_title">Dans le cas où vous seriez en détresse…</string>
|
||||
<string name="sk_search_suicide_message">Si vous cherchez un signe pour ne pas vous suicider, le voici. Si vous êtes en détresse et/ou avez des pensées suicidaires, si vous voulez aider une personne en souffrance, vous pouvez contacter une ligne d\'assistance de prévention du suicide.</string>
|
||||
<string name="sk_trending_links_info_banner">Ce sont les actualités dont on parle sur votre serveur.</string>
|
||||
<string name="sk_trending_links_info_banner">Ces actualités font parler d’elles dans tout le Fediverse.</string>
|
||||
<string name="sk_load_missing_posts_above">Charger les messages les plus récents</string>
|
||||
<string name="sk_load_missing_posts_below">Charger les anciens messages</string>
|
||||
<string name="sk_time_seconds">%d secondes</string>
|
||||
<string name="sk_time_minutes">%d minutes</string>
|
||||
<string name="sk_time_hours">%d heures</string>
|
||||
<string name="sk_time_days">%d jours</string>
|
||||
<string name="sk_trending_posts_info_banner">Ce sont les publications qui gagnent du terrain sur votre serveur.</string>
|
||||
<string name="sk_trending_posts_info_banner">Ces publications gagnent actuellement du terrain sur le Fediverse.</string>
|
||||
<string name="sk_blocked_accounts">Comptes bloqués</string>
|
||||
<string name="sk_muted_accounts">Comptes silenciés</string>
|
||||
<string name="sk_settings_like_icon">Utiliser le cœur comme icône pour les favoris</string>
|
||||
</resources>
|
||||
@@ -366,7 +366,7 @@
|
||||
<item quantity="other">%1$,d pengguna bereaksi dengan %2$s</item>
|
||||
</plurals>
|
||||
<string name="sk_enter_emoji_toast">Silakan ketik emoji</string>
|
||||
<string name="sk_enter_emoji_hint">Ketik emoji atau cari emoji kustom</string>
|
||||
<string name="sk_enter_emoji_hint">Ketik emoji atau cari</string>
|
||||
<string name="sk_settings_emoji_reactions">Aktifkan reaksi emoji</string>
|
||||
<string name="sk_settings_emoji_reactions_explanation">Menampilkan reaksi emoji di kiriman dan memungkinkan Anda untuk menambahkan sendiri. Banyak server Fediverse yang mendukung ini, tetapi Mastodon tidak mendukungnya.</string>
|
||||
<string name="sk_settings_emoji_reactions_in_lists_explanation">"Menentukan apakah reaksi emoji ditampilkan di lini masa. Jika opsi ini mati, reaksi emoji hanya akan ditampilkan ketika melihat sebuah utas."</string>
|
||||
@@ -387,13 +387,14 @@
|
||||
<string name="sk_search_suicide_hotlines">Temukan hotline</string>
|
||||
<string name="sk_do_not_show_again">Jangan tampilkan lagi</string>
|
||||
<string name="sk_suicide_helplines_url">https://findahelpline.com/id</string>
|
||||
<string name="sk_trending_posts_info_banner">Di bawah adalah kiriman yang mendapatkan daya tarik di server Anda.</string>
|
||||
<string name="sk_trending_posts_info_banner">Kiriman berikut mendapatkan daya tarik di Fediverse.</string>
|
||||
<string name="sk_load_missing_posts_below">Muat kiriman lama</string>
|
||||
<string name="sk_search_suicide_title">Jika Anda dalam kesulitan…</string>
|
||||
<string name="sk_time_minutes">%d menit</string>
|
||||
<string name="sk_search_suicide_message">Jika Anda mencari tanda untuk tidak melakukan bunuh diri, ini adalah tanda itu. Tolong pertimbangkan untuk menghubungi hotline bunuh diri lokal jika Anda dalam kesulitan.</string>
|
||||
<string name="sk_trending_links_info_banner">Di bawah adalah berita yang dibicarakan di server Anda.</string>
|
||||
<string name="sk_trending_links_info_banner">Berita berikut sedang dibicarakan di Fediverse.</string>
|
||||
<string name="sk_post_contains_media">Kiriman berisi media</string>
|
||||
<string name="sk_blocked_accounts">Akun yang diblokir</string>
|
||||
<string name="sk_muted_accounts">Akun yang dibisukan</string>
|
||||
<string name="sk_settings_like_icon">Gunakam hati sebagai ikon favorit</string>
|
||||
</resources>
|
||||
@@ -599,4 +599,5 @@
|
||||
<item quantity="one">%,d færsla í dag</item>
|
||||
<item quantity="other">%,d færslur í dag</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">Villa við að spila myndskeið</string>
|
||||
</resources>
|
||||
|
||||
@@ -588,6 +588,8 @@
|
||||
<string name="post_translated">Tradotto da %1$s utilizzando %2$s</string>
|
||||
<string name="translation_show_original">Mostra originale</string>
|
||||
<string name="translation_failed">Traduzione fallita. Forse l\'amministratore non ha abilitato le traduzioni su questo server, o su questo server è in esecuzione una versione precedente di Mastodon in cui le traduzioni non sono ancora supportate.</string>
|
||||
<string name="settings_privacy">Privacy e copertura</string>
|
||||
<string name="settings_discoverable">Include il profilo e i post negli algoritmi di scoperta</string>
|
||||
<string name="settings_indexable">Includi i post pubblici nei risultati di ricerca</string>
|
||||
<plurals name="x_participants">
|
||||
<item quantity="one">%,d participante</item>
|
||||
@@ -597,4 +599,5 @@
|
||||
<item quantity="one">%,d post oggi</item>
|
||||
<item quantity="other">%,d post oggi</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">Errore nella riproduzione del video</string>
|
||||
</resources>
|
||||
|
||||
@@ -568,4 +568,5 @@
|
||||
<plurals name="x_posts_today">
|
||||
<item quantity="other">今日の投稿 %,d 件</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">動画再生に失敗しました</string>
|
||||
</resources>
|
||||
|
||||
@@ -661,4 +661,5 @@
|
||||
<item quantity="many">%,d постов сегодня</item>
|
||||
<item quantity="other">%,d постов сегодня</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">Ошибка воспроизведения видео</string>
|
||||
</resources>
|
||||
|
||||
@@ -337,4 +337,78 @@
|
||||
<string name="sk_settings_continues_playback_summary">Позволять продолжить воспроизведение уже проигрываемого медиа, накладывая его на новое воспроизведение</string>
|
||||
<string name="sk_settings_continues_playback">Наложение аудио</string>
|
||||
<string name="sk_trending_links_info_banner">Это новости, которые обсуждаются на вашем сервере.</string>
|
||||
<string name="sk_disable_pill_shaped_active_indicator">Отключить индикатор активной вкладки в виде таблетки</string>
|
||||
<string name="sk_tab_profile">Профиль</string>
|
||||
<plurals name="sk_time_seconds">
|
||||
<item quantity="one">%d секунда</item>
|
||||
<item quantity="few">%d секунды</item>
|
||||
<item quantity="many">%d секунд</item>
|
||||
<item quantity="other">%d секунд</item>
|
||||
</plurals>
|
||||
<string name="sk_mute_label">Длительность</string>
|
||||
<string name="sk_settings_show_emoji_reactions_only_opened">Только когда пост открыт</string>
|
||||
<plurals name="sk_time_hours">
|
||||
<item quantity="one">%d час</item>
|
||||
<item quantity="few">%d часа</item>
|
||||
<item quantity="many">%d часов</item>
|
||||
<item quantity="other">%d часов</item>
|
||||
</plurals>
|
||||
<string name="sk_tab_home">Главная</string>
|
||||
<string name="sk_settings_show_emoji_reactions_hide_empty">Скрывать пустые реакции эмодзи</string>
|
||||
<string name="sk_settings_show_emoji_reactions">Отображать реакции эмодзи в лентах</string>
|
||||
<plurals name="sk_posts_count_label">
|
||||
<item quantity="one">пост</item>
|
||||
<item quantity="few">поста</item>
|
||||
<item quantity="many">постов</item>
|
||||
<item quantity="other">постов</item>
|
||||
</plurals>
|
||||
<string name="sk_notification_mention">Вы были упомянуты %s</string>
|
||||
<string name="sk_settings_emoji_reactions">Включить реакции эмодзи</string>
|
||||
<string name="sk_suicide_search_terms">Суицид, Самоубийство</string>
|
||||
<string name="sk_duration_minutes_5">5 минут</string>
|
||||
<string name="sk_load_missing_posts_above">Загрузить более новые посты</string>
|
||||
<string name="sk_settings_display_pronouns_in_timelines">Отображать местоимения в лентах</string>
|
||||
<plurals name="sk_time_days">
|
||||
<item quantity="one">%d день</item>
|
||||
<item quantity="few">%d дня</item>
|
||||
<item quantity="many">%d дней</item>
|
||||
<item quantity="other">%d дней</item>
|
||||
</plurals>
|
||||
<string name="sk_settings_show_labels_in_navigation_bar">Отображать ярлыки вкладок на панели навигации</string>
|
||||
<string name="sk_tab_search">Поиск</string>
|
||||
<string name="sk_settings_show_emoji_reactions_always">Всегда показывать кнопку добавить</string>
|
||||
<string name="sk_duration_indefinite">Бессрочно</string>
|
||||
<string name="sk_search_suicide_hotlines">Найти службу помощи</string>
|
||||
<string name="sk_duration_hours_1">1 час</string>
|
||||
<string name="sk_duration_hours_6">6 часов</string>
|
||||
<string name="sk_enter_emoji_hint">Введите эмодзи или найдете</string>
|
||||
<string name="sk_duration_days_7">7 дней</string>
|
||||
<string name="sk_settings_true_black">Абсолютно черный режим</string>
|
||||
<string name="sk_do_not_show_again">Не показывать снова</string>
|
||||
<string name="sk_settings_display_pronouns_in_threads">Отображать местоимения в ответах</string>
|
||||
<string name="sk_enter_emoji_toast">Пожалуйста введите эмодзи</string>
|
||||
<string name="sk_duration_minutes_30">30 минут</string>
|
||||
<string name="sk_settings_display_pronouns_in_user_listings">Отображать местоимения в списках пользователей</string>
|
||||
<string name="sk_button_react">Отреагировать с эмодзи</string>
|
||||
<string name="sk_duration_days_1">1 день</string>
|
||||
<string name="sk_load_missing_posts_below">Загрузить более старые посты</string>
|
||||
<string name="sk_settings_emoji_reactions_explanation">Отображает реакции эмодзи на посты и позволяет добавлять свои. Различные серверы Fediverse поддерживают эту функцию, но Mastodon нет.</string>
|
||||
<string name="sk_duration_days_3">3 дня</string>
|
||||
<string name="sk_search_suicide_title">В случае, если вы попали в беду…</string>
|
||||
<plurals name="sk_time_minutes">
|
||||
<item quantity="one">%d минута</item>
|
||||
<item quantity="few">%d минуты</item>
|
||||
<item quantity="many">%d минут</item>
|
||||
<item quantity="other">%d минут</item>
|
||||
</plurals>
|
||||
<plurals name="sk_users_reacted_with">
|
||||
<item quantity="one">Один пользователь отреагировал с %2$s</item>
|
||||
<item quantity="few">%1$,d пользователей отреагировали с %2$s</item>
|
||||
<item quantity="many">%1$,d пользователей отреагировали с %2$s</item>
|
||||
<item quantity="other">%1$,d пользователей отреагировали с %2$s</item>
|
||||
</plurals>
|
||||
<string name="sk_search_suicide_message">Если вы ищете знак, чтобы не совершить самоубийство, то это он. Если вы попали в беду, обратитесь в местную службу помощи самоубийцам.</string>
|
||||
<string name="sk_post_contains_media">Пост содержит медиа</string>
|
||||
<string name="sk_tab_notifications">Уведомления</string>
|
||||
<string name="sk_list_exclusive_switch_explanation">Участники эксклюзивного списка не будут отображаться в вашей домашней ленте - если ваш экземпляр поддерживает такую возможность.</string>
|
||||
</resources>
|
||||
@@ -12,7 +12,9 @@
|
||||
<string name="in_reply_to">Som svar på %s</string>
|
||||
<string name="notifications">Notiser</string>
|
||||
<string name="user_followed_you">%s följde dig</string>
|
||||
<string name="user_sent_follow_request">%s skickade en förfrågan om att följa dig</string>
|
||||
<string name="user_favorited">%s favoritmarkerade ditt inlägg</string>
|
||||
<string name="notification_boosted">%s boostade ditt inlägg</string>
|
||||
<string name="share_toot_title">Dela</string>
|
||||
<string name="settings">Inställningar</string>
|
||||
<string name="publish">Publicera</string>
|
||||
|
||||
@@ -568,4 +568,5 @@
|
||||
<plurals name="x_posts_today">
|
||||
<item quantity="other">%,d โพสต์วันนี้</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">เกิดข้อผิดพลาดในการเล่นวิดีโอ</string>
|
||||
</resources>
|
||||
|
||||
@@ -661,4 +661,5 @@
|
||||
<item quantity="many">%,d дописів сьогодні</item>
|
||||
<item quantity="other">%,d дописа сьогодні</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">Помилка відтворення відео</string>
|
||||
</resources>
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
<string name="sk_delete_notification_confirm_action">Видалити сповіщення</string>
|
||||
<string name="sk_delete_notification_confirm">Ви впевнені, що хочете видалити це сповіщення\?</string>
|
||||
<string name="sk_settings_enable_delete_notifications">Увімкнути видалення сповіщень</string>
|
||||
<string name="sk_settings_publish_button_text">Текст кнопки \"опублікувати\"</string>
|
||||
<string name="sk_settings_publish_button_text_title">Змінити текст кнопки \"опублікувати\"</string>
|
||||
<string name="sk_settings_translate_only_opened">Сховати кнопку \"перекласти\" у стрічці</string>
|
||||
<string name="sk_settings_publish_button_text">Текст кнопки «Опублікувати»</string>
|
||||
<string name="sk_settings_publish_button_text_title">Змінити текст кнопки «Опублікувати»</string>
|
||||
<string name="sk_settings_translate_only_opened">Сховати кнопку «Перекласти» у стрічці</string>
|
||||
<string name="sk_settings_translation_availability_note_available">%s підтримує переклад!</string>
|
||||
<string name="sk_settings_translation_availability_note_unavailable">%s не підтримує переклад.</string>
|
||||
<string name="sk_clear_all_notifications">Очистити всі сповіщення</string>
|
||||
@@ -304,7 +304,7 @@
|
||||
<string name="sk_settings_prefix_replies_always">Відповіді будь-кому</string>
|
||||
<string name="sk_settings_prefix_replies_never">Ніколи</string>
|
||||
<string name="sk_settings_prefix_replies_to_others">Лише у відповідь іншим</string>
|
||||
<string name="sk_settings_forward_report_default">Усталений перемикач “Пересилати звіт”</string>
|
||||
<string name="sk_settings_forward_report_default">Усталений перемикач «Пересилати звіт»</string>
|
||||
<string name="sk_icon_feed">Стрічка</string>
|
||||
<string name="sk_exclusive_list">Список виключення</string>
|
||||
<string name="sk_list_exclusive_switch">Створити список виключень</string>
|
||||
@@ -328,7 +328,7 @@
|
||||
<string name="sk_icon_diamond">Діамант</string>
|
||||
<string name="sk_icon_umbrella">Парасолька</string>
|
||||
<string name="sk_add_timeline">Додати стрічку</string>
|
||||
<string name="sk_pronouns_label">Вимова</string>
|
||||
<string name="sk_pronouns_label">Займенники</string>
|
||||
<string name="sk_switch_timeline">Перемкнути стрічку</string>
|
||||
<string name="sk_settings_instance">Сервер</string>
|
||||
<string name="sk_settings_true_black">Абсолютно чорний режим</string>
|
||||
@@ -389,7 +389,7 @@
|
||||
<string name="sk_load_missing_posts_oldest_first">Спочатку найдавніші (за зростанням)</string>
|
||||
<string name="sk_settings_show_emoji_reactions">Показувати реакції емоджі у стрічках</string>
|
||||
<string name="sk_settings_show_emoji_reactions_hide_empty">Сховати реакції без емоджі</string>
|
||||
<string name="sk_settings_show_emoji_reactions_always">Завжди показувати кнопку Додати</string>
|
||||
<string name="sk_settings_show_emoji_reactions_always">Завжди показувати кнопку «Додати»</string>
|
||||
<string name="sk_suicide_search_terms">Самогубство</string>
|
||||
<string name="sk_search_suicide_title">Якщо ви потрапили в біду…</string>
|
||||
<string name="sk_search_suicide_message">Якщо ви шукаєте знак, щоб не накладати на себе руки, то це він. Якщо ви перебуваєте у скрутному становищі, зверніться на місцеву гарячу лінію з питань самогубств.</string>
|
||||
|
||||
@@ -568,4 +568,5 @@
|
||||
<plurals name="x_posts_today">
|
||||
<item quantity="other">本日共 %,d 則嘟文</item>
|
||||
</plurals>
|
||||
<string name="error_playing_video">播放影片時發生錯誤</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- Увімкнено можливість відкривати оригінальний допис під час відповіді (натиснувши рядок "У відповідь...")
|
||||
- Увімкнено можливість відкривати оригінальний допис під час відповіді (натиснувши рядок «У відповідь...»)
|
||||
- Об’єднано зміни та виправлено помилки
|
||||
- Вилучено невикористаний код “App Center”.
|
||||
- Вилучено невикористаний код «App Center»
|
||||
- Додано випуск без федеративної стрічки для Play Маркету
|
||||
- Додано спеціальний URI перенаправлення для полегшення входу
|
||||
- Змінено посилання на допомогу у розробці
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- Користувацькі кольорові теми від @LucasGGamerM
|
||||
- Новий текстовий логотип "megalodon", представлений @LucasGGamerM
|
||||
- Новий текстовий логотип «megalodon», представлений @LucasGGamerM
|
||||
- Кращий пошук емодзі під час створення допису
|
||||
- Налагоджене голосування (показувати власний голос, завжди показувати кнопку голосування, не обрізати довгі відповіді)
|
||||
- Додано налаштування push-сповіщень для сповіщень про дописи
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
- Нові темно-сірі тони для всіх тем
|
||||
- Виразніша заповнена піктограма поширення
|
||||
- Анімації для кнопок взаємодій
|
||||
- Виправлення помилок (збій на деяких дописах, "Списки з", усталена мова дописів тощо)
|
||||
- Виправлення помилок (збій на деяких дописах, «Списки з», усталена мова дописів тощо)
|
||||
|
||||
@@ -6,9 +6,9 @@ Megalodon — це модифікована версія <a href="https://github
|
||||
- <b>Федеративна стрічка</b>: Переглядайте всі загальнодоступні дописи від людей зі всього Федівсесвіту!
|
||||
- <b>Власні стрічки</b>: Закріпіть будь-який список або хештег на домашній вкладці Megalodon, щоб просто переходити між улюбленими темами та людьми!
|
||||
- <b>Чернетки й заплановані дописи</b>: Дозволяє підготувати допис і запланувати його автонадсилання у вказаний час.
|
||||
- <b>Закріплення дописів</b>: Закріплюйте ваші найважливіші дописи у своєму профілі та переглядайте, що закріпили люди у вкладці "Закріплене".
|
||||
- <b>Закріплення дописів</b>: Закріплюйте ваші найважливіші дописи у своєму профілі та переглядайте, що закріпили люди у вкладці «Закріплене».
|
||||
- <b>Слідкуйте за хештегами</b>: Переглядайте нові дописи з певними хештегами безпосередньо у своїй домашній стрічці, підписавшись на них.
|
||||
- <b>Відповідайте на запити на стеження</b>: Погоджуйте або відхиляйте запити на стеження зі сповіщення чи виділеного списку "Запити на стеження".
|
||||
- <b>Відповідайте на запити на стеження</b>: Погоджуйте або відхиляйте запити на стеження зі сповіщення чи виділеного списку «Запити на стеження».
|
||||
- <b>Видалити та переробити</b>: Улюблена функція, яка уможливила редагування дописів без фактичної функції редагування.
|
||||
- <b>Вибір мови selector</b>: Зручний вибір мови для кожного допису для коректної роботи фільтрів і перекладу.
|
||||
- <b>Переклад</b>: Легко перекладайте дописи прямо в Megalodon! Працює лише за умови, що ця функція також доступна у вашому Mastodon для браузера.
|
||||
|
||||
Reference in New Issue
Block a user