Compare commits
52 Commits
2.1.4+fork
...
2.1.4+fork
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85b135fa34 | ||
|
|
a195aa56ca | ||
|
|
b694329bda | ||
|
|
79362b59c4 | ||
|
|
fa51b6acb2 | ||
|
|
0aa277ee72 | ||
|
|
d111be7293 | ||
|
|
dd06292b53 | ||
|
|
98953e8afa | ||
|
|
8a8cefe68a | ||
|
|
bbd72e299b | ||
|
|
24b227f665 | ||
|
|
71118b1f84 | ||
|
|
095e1543fe | ||
|
|
7bdd9811da | ||
|
|
c086900ae6 | ||
|
|
143df89855 | ||
|
|
b0da6897a0 | ||
|
|
b798bbf234 | ||
|
|
93ba515a29 | ||
|
|
df5bfa77c6 | ||
|
|
797293fc4b | ||
|
|
a1a4c59b83 | ||
|
|
38f74c96bf | ||
|
|
9f29d72212 | ||
|
|
9786e324b7 | ||
|
|
a7fef67d48 | ||
|
|
30726cb364 | ||
|
|
e0ff1f6725 | ||
|
|
d8cc578537 | ||
|
|
f9f863ea5e | ||
|
|
2efb79f6cb | ||
|
|
d534557915 | ||
|
|
68ebc1aa93 | ||
|
|
251d90e0ec | ||
|
|
ccd313533b | ||
|
|
f70ea97d9e | ||
|
|
3c9efdbbf2 | ||
|
|
3bd67f9ab1 | ||
|
|
42946eca44 | ||
|
|
b2d502ae79 | ||
|
|
4d9f625ff4 | ||
|
|
18e3fadb26 | ||
|
|
0364d95300 | ||
|
|
d6c05f0850 | ||
|
|
5cc94fa2b0 | ||
|
|
08d4c135ea | ||
|
|
6220a20734 | ||
|
|
f1c55aa5e8 | ||
|
|
b8fe1fd640 | ||
|
|
928506b360 | ||
|
|
167a2e1e2f |
42
.github/workflows/nightly-builds.yml
vendored
@@ -11,27 +11,27 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Appkit Repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: grishka/appkit
|
||||
|
||||
- name: set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'corretto'
|
||||
cache: gradle
|
||||
|
||||
- name: Comment out signing config in appkits gradle file
|
||||
run: |
|
||||
sed -i 's/sign publishing\.publications\.release/\/\/ sign publishing.publications.release/' appkit/maven-push.gradle
|
||||
|
||||
- name: Grant execute permission for gradlew for Appkit
|
||||
run: chmod +x gradlew
|
||||
|
||||
- name: Compile appkit
|
||||
run: ./gradlew publishToMavenLocal
|
||||
# - name: Checkout Appkit Repo
|
||||
# uses: actions/checkout@v3
|
||||
# with:
|
||||
# repository: grishka/appkit
|
||||
#
|
||||
# - name: set up JDK 17
|
||||
# uses: actions/setup-java@v3
|
||||
# with:
|
||||
# java-version: '17'
|
||||
# distribution: 'corretto'
|
||||
# cache: gradle
|
||||
#
|
||||
# - name: Comment out signing config in appkits gradle file
|
||||
# run: |
|
||||
# sed -i 's/sign publishing\.publications\.release/\/\/ sign publishing.publications.release/' appkit/maven-push.gradle
|
||||
#
|
||||
# - name: Grant execute permission for gradlew for Appkit
|
||||
# run: chmod +x gradlew
|
||||
#
|
||||
# - name: Compile appkit
|
||||
# run: ./gradlew publishToMavenLocal
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- name: set up JDK 17
|
||||
|
||||
@@ -16,8 +16,8 @@ android {
|
||||
applicationId "org.joinmastodon.android.moshinda"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 103
|
||||
versionName "2.1.4+fork.103.moshinda"
|
||||
versionCode 104
|
||||
versionName "2.1.4+fork.104.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']
|
||||
}
|
||||
@@ -44,6 +44,28 @@ android {
|
||||
keyPassword = properties.getProperty('SIGNING_KEY_PASSWORD')
|
||||
}
|
||||
}
|
||||
|
||||
// release{
|
||||
// storeFile = file("keystore/release_keystore.jks")
|
||||
// storePassword System.getenv("RELEASE_SIGNING_STORE_PASSWORD")
|
||||
// if (storePassword == null) {
|
||||
// Properties properties = new Properties()
|
||||
// properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
||||
// storePassword = properties.getProperty('RELEASE_SIGNING_STORE_PASSWORD')
|
||||
// }
|
||||
// keyAlias System.getenv("RELEASE_SIGNING_KEY_ALIAS")
|
||||
// if (keyAlias == null) {
|
||||
// Properties properties = new Properties()
|
||||
// properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
||||
// keyAlias = properties.getProperty('RELEASE_SIGNING_KEY_ALIAS')
|
||||
// }
|
||||
// keyPassword System.getenv("RELEASE_SIGNING_KEY_PASSWORD")
|
||||
// if (keyPassword == null) {
|
||||
// Properties properties = new Properties()
|
||||
// properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
||||
// keyPassword = properties.getProperty('RELEASE_SIGNING_KEY_PASSWORD')
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
@@ -81,7 +103,10 @@ android {
|
||||
versionNameSuffix '-play'
|
||||
}
|
||||
githubRelease { initWith release }
|
||||
fdroidRelease { initWith release }
|
||||
fdroidRelease {
|
||||
initWith release
|
||||
// signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
|
||||
@@ -574,6 +574,25 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
// This is a temporary measure to deal with the app crashing when the poll isn't updated.
|
||||
// This is needed because of a possible id mismatch that screws with things
|
||||
if(firstOptionIndex==-1 || footerIndex==-1){
|
||||
for(StatusDisplayItem item:displayItems){
|
||||
if(status.id.equals(itemID)){
|
||||
if(item instanceof SpoilerStatusDisplayItem){
|
||||
spoilerItem=(SpoilerStatusDisplayItem) item;
|
||||
}else if(item instanceof PollOptionStatusDisplayItem && firstOptionIndex==-1){
|
||||
firstOptionIndex=i;
|
||||
}else if(item instanceof PollFooterStatusDisplayItem){
|
||||
footerIndex=i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
if(firstOptionIndex==-1 || footerIndex==-1)
|
||||
throw new IllegalStateException("Can't find all poll items in displayItems");
|
||||
List<StatusDisplayItem> pollItems=displayItems.subList(firstOptionIndex, footerIndex+1);
|
||||
|
||||
@@ -1293,7 +1293,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
.setPositiveButton(R.string.ok, (a, b)->{})
|
||||
.show();
|
||||
handlePublishError(null);
|
||||
publishButton.setEnabled(false);
|
||||
(GlobalUserPreferences.relocatePublishButton ? publishButtonRelocated : publishButton).setEnabled(false);
|
||||
}
|
||||
|
||||
if (replyTo == null) updateRecentLanguages();
|
||||
@@ -1320,7 +1320,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
result.preview=true;
|
||||
wm.removeView(sendingOverlay);
|
||||
sendingOverlay=null;
|
||||
publishButton.setEnabled(true);
|
||||
(GlobalUserPreferences.relocatePublishButton ? publishButtonRelocated : publishButton).setEnabled(true);
|
||||
V.setVisibilityAnimated(sendProgress, View.GONE);
|
||||
InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class);
|
||||
imm.hideSoftInputFromWindow(contentView.getWindowToken(), 0);
|
||||
|
||||
@@ -154,7 +154,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
private SwipeRefreshLayout refreshLayout;
|
||||
private View followersBtn, followingBtn;
|
||||
private EditText nameEdit, bioEdit;
|
||||
private ProgressBar actionProgress, notifyProgress, noteSaveProgress;
|
||||
private ProgressBar actionProgress, notifyProgress;
|
||||
private FrameLayout[] tabViews;
|
||||
private TabLayoutMediator tabLayoutMediator;
|
||||
private TextView followsYouView;
|
||||
@@ -197,7 +197,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
|
||||
// profile note
|
||||
private FrameLayout noteWrap;
|
||||
private ImageButton noteSaveBtn;
|
||||
private EditText noteEdit;
|
||||
|
||||
@Override
|
||||
@@ -220,7 +219,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
if(!isOwnProfile)
|
||||
loadRelationship();
|
||||
else if (isInstanceAkkoma()) {
|
||||
maxFields = getInstance().get().pleroma.metadata.fieldsLimits.maxFields;
|
||||
maxFields = (int) getInstance().get().pleroma.metadata.fieldsLimits.maxFields;
|
||||
}
|
||||
}else{
|
||||
profileAccountID=getArguments().getString("profileAccountID");
|
||||
@@ -271,7 +270,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
bioEditWrap=content.findViewById(R.id.bio_edit_wrap);
|
||||
actionProgress=content.findViewById(R.id.action_progress);
|
||||
notifyProgress=content.findViewById(R.id.notify_progress);
|
||||
noteSaveProgress=content.findViewById(R.id.note_save_progress);
|
||||
fab=content.findViewById(R.id.fab);
|
||||
followsYouView=content.findViewById(R.id.follows_you);
|
||||
countersLayout=content.findViewById(R.id.profile_counters);
|
||||
@@ -288,46 +286,14 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
|
||||
noteEdit=content.findViewById(R.id.note_edit);
|
||||
noteWrap=content.findViewById(R.id.note_edit_wrap);
|
||||
noteSaveBtn=content.findViewById(R.id.note_save_btn);
|
||||
|
||||
noteSaveBtn.setOnClickListener((v->{
|
||||
savePrivateNote(noteEdit.getText().toString());
|
||||
InputMethodManager imm=(InputMethodManager) getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(this.getView().getRootView().getWindowToken(), 0);
|
||||
noteEdit.clearFocus();
|
||||
noteSaveBtn.clearFocus();
|
||||
}));
|
||||
|
||||
|
||||
noteEdit.setOnFocusChangeListener((v, hasFocus)->{
|
||||
if(hasFocus){
|
||||
hideFab();
|
||||
V.setVisibilityAnimated(noteSaveBtn, View.VISIBLE);
|
||||
noteEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
|
||||
}else if(!noteSaveBtn.hasFocus()){
|
||||
}else{
|
||||
showFab();
|
||||
hideNoteSaveBtnIfNotDirty();
|
||||
}
|
||||
});
|
||||
|
||||
noteEdit.addTextChangedListener(new TextWatcher(){
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count){
|
||||
if(relationship!=null && noteSaveBtn.getVisibility()!=View.VISIBLE && !s.toString().equals(relationship.note))
|
||||
V.setVisibilityAnimated(noteSaveBtn, View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s){}
|
||||
});
|
||||
|
||||
noteSaveBtn.setOnFocusChangeListener((v, hasFocus)->{
|
||||
if(!hasFocus && !noteEdit.hasFocus()){
|
||||
showFab();
|
||||
hideNoteSaveBtnIfNotDirty();
|
||||
savePrivateNote(noteEdit.getText().toString());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -495,12 +461,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
return sizeWrapper;
|
||||
}
|
||||
|
||||
private void hideNoteSaveBtnIfNotDirty(){
|
||||
if(noteEdit.getText().toString().equals(relationship.note)){
|
||||
V.setVisibilityAnimated(noteSaveBtn, View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
private void showPrivateNote(){
|
||||
noteWrap.setVisibility(View.VISIBLE);
|
||||
noteEdit.setText(relationship.note);
|
||||
@@ -517,8 +477,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
invalidateOptionsMenu();
|
||||
return;
|
||||
}
|
||||
V.setVisibilityAnimated(noteSaveProgress, View.VISIBLE);
|
||||
V.setVisibilityAnimated(noteSaveBtn, View.INVISIBLE);
|
||||
new SetPrivateNote(profileAccountID, note).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(Relationship result) {
|
||||
@@ -529,8 +487,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
@Override
|
||||
public void onError(ErrorResponse error) {
|
||||
error.showToast(getContext());
|
||||
V.setVisibilityAnimated(noteSaveProgress, View.GONE);
|
||||
V.setVisibilityAnimated(noteSaveBtn, View.VISIBLE);
|
||||
}
|
||||
}).exec(accountID);
|
||||
}
|
||||
@@ -693,6 +649,13 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
getChildFragmentManager().putFragment(outState, "pinnedPosts", pinnedPostsFragment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHidden(){
|
||||
if (relationship != null && !noteEdit.getText().toString().equals(relationship.note)){
|
||||
savePrivateNote(noteEdit.getText().toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig){
|
||||
super.onConfigurationChanged(newConfig);
|
||||
@@ -857,9 +820,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
return;
|
||||
inflater.inflate(isOwnProfile ? R.menu.profile_own : R.menu.profile, menu);
|
||||
if(isOwnProfile){
|
||||
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.scheduled, R.id.bookmarks, R.id.favorites);
|
||||
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.scheduled, R.id.bookmarks);
|
||||
}else{
|
||||
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.bookmarks, R.id.followed_hashtags, R.id.favorites, R.id.scheduled);
|
||||
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.edit_note);
|
||||
}
|
||||
boolean hasMultipleAccounts = AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1;
|
||||
MenuItem openWithAccounts = menu.findItem(R.id.open_with_account);
|
||||
@@ -902,8 +865,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
}else{
|
||||
blockDomain.setVisible(false);
|
||||
}
|
||||
menu.findItem(R.id.edit_note).setTitle(noteWrap.getVisibility()==View.GONE && (relationship.note==null || relationship.note.isEmpty())
|
||||
? R.string.sk_add_note : R.string.sk_delete_note);
|
||||
boolean canAddNote = noteWrap.getVisibility()==View.GONE && (relationship.note==null || relationship.note.isEmpty());
|
||||
menu.findItem(R.id.edit_note).setTitle(canAddNote ? R.string.sk_add_note : R.string.sk_delete_note);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -994,8 +957,13 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class);
|
||||
imm.showSoftInput(noteEdit, 0);
|
||||
}, 100);
|
||||
}else if(relationship.note.isEmpty()){
|
||||
}else if(relationship.note.isEmpty() && noteEdit.getText().toString().isEmpty()){
|
||||
hidePrivateNote();
|
||||
noteEdit.clearFocus();
|
||||
noteEdit.postDelayed(()->{
|
||||
InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class);
|
||||
imm.hideSoftInputFromWindow(noteEdit.getWindowToken(), 0);
|
||||
}, 100);
|
||||
UiUtils.beginLayoutTransition(scrollableContent);
|
||||
}else{
|
||||
new M3AlertDialogBuilder(getActivity())
|
||||
@@ -1038,13 +1006,10 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
UiUtils.setRelationshipToActionButtonM3(relationship, actionButton);
|
||||
actionProgress.setIndeterminateTintList(actionButton.getTextColors());
|
||||
notifyProgress.setIndeterminateTintList(notifyButton.getTextColors());
|
||||
noteSaveProgress.setIndeterminateTintList(noteEdit.getTextColors());
|
||||
followsYouView.setVisibility(relationship.followedBy ? View.VISIBLE : View.GONE);
|
||||
notifyButton.setSelected(relationship.notifying);
|
||||
notifyButton.setContentDescription(getString(relationship.notifying ? R.string.sk_user_post_notifications_on : R.string.sk_user_post_notifications_off, '@'+account.username));
|
||||
noteEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
V.setVisibilityAnimated(noteSaveProgress, View.GONE);
|
||||
V.setVisibilityAnimated(noteSaveBtn, View.INVISIBLE);
|
||||
UiUtils.beginLayoutTransition(scrollableContent);
|
||||
}
|
||||
|
||||
|
||||
@@ -160,6 +160,8 @@ public class SettingsServerFragment extends AppKitFragment{
|
||||
args.putString("account", accountID);
|
||||
args.putString("domain", instance.normalizedUri);
|
||||
Nav.go(getActivity(), CustomLocalTimelineFragment.class, args);
|
||||
} else if (id==R.id.open_in_browser){
|
||||
UiUtils.launchWebBrowser(getActivity(), new Uri.Builder().scheme("https").authority(instance.uri).appendPath("about").build().toString());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -245,19 +245,19 @@ public class Instance extends BaseModel{
|
||||
|
||||
@Parcel
|
||||
public static class FieldsLimits {
|
||||
public int maxFields;
|
||||
public int maxRemoteFields;
|
||||
public int nameLength;
|
||||
public int valueLength;
|
||||
public long maxFields;
|
||||
public long maxRemoteFields;
|
||||
public long nameLength;
|
||||
public long valueLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Parcel
|
||||
public static class PleromaPollLimits {
|
||||
public int maxExpiration;
|
||||
public int maxOptionChars;
|
||||
public int maxOptions;
|
||||
public int minExpiration;
|
||||
public long maxExpiration;
|
||||
public long maxOptionChars;
|
||||
public long maxOptions;
|
||||
public long minExpiration;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,7 +375,7 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard{
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(){
|
||||
if(!isRecentEmojiCategory) return false;
|
||||
if(!isRecentEmojiCategory || requests.size() < getAbsoluteAdapterPosition()-1 || 0 > getAbsoluteAdapterPosition()-1) return false;
|
||||
requests.remove(getAbsoluteAdapterPosition()-1);
|
||||
getBindingAdapter().notifyItemRemoved(getAbsoluteAdapterPosition());
|
||||
getBindingAdapter().notifyItemChanged(0);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class AudioStatusDisplayItem extends StatusDisplayItem{
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
this.attachment=attachment;
|
||||
imageRequest=new UrlImageLoaderRequest(TextUtils.isEmpty(attachment.previewUrl) ? status.account.avatarStatic : attachment.previewUrl, V.dp(100), V.dp(100));
|
||||
imageRequest=new UrlImageLoaderRequest(TextUtils.isEmpty(attachment.previewUrl) ? (status.account != null ? status.account.avatarStatic : "") : attachment.previewUrl, V.dp(100), V.dp(100));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -167,6 +167,10 @@ public abstract class StatusDisplayItem{
|
||||
args.putString("account", accountID);
|
||||
ScheduledStatus scheduledStatus = parentObject instanceof ScheduledStatus s ? s : null;
|
||||
|
||||
// Hide statuses that have a filter action of hide
|
||||
if(!new StatusFilterPredicate(accountID, filterContext, FilterAction.HIDE).test(status))
|
||||
return new ArrayList<StatusDisplayItem>() ;
|
||||
|
||||
HeaderStatusDisplayItem header=null;
|
||||
boolean hideCounts=!AccountSessionManager.get(accountID).getLocalPreferences().showInteractionCounts;
|
||||
|
||||
@@ -363,10 +367,6 @@ public abstract class StatusDisplayItem{
|
||||
}
|
||||
}
|
||||
|
||||
// Hide statuses that have a filter action of hide
|
||||
if(!new StatusFilterPredicate(accountID, filterContext, FilterAction.HIDE).test(status))
|
||||
return new ArrayList<StatusDisplayItem>() ;
|
||||
|
||||
List<StatusDisplayItem> nonGapItems=gap!=null ? items.subList(0, items.size()-1) : items;
|
||||
WarningFilteredStatusDisplayItem warning=applyingFilter==null ? null :
|
||||
new WarningFilteredStatusDisplayItem(parentID, fragment, statusForContent, nonGapItems, applyingFilter);
|
||||
|
||||
@@ -51,10 +51,12 @@ import org.joinmastodon.android.api.MastodonAPIController;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.ui.ImageDescriptionSheet;
|
||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||
import org.joinmastodon.android.utils.FileProvider;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -72,6 +74,9 @@ import me.grishka.appkit.utils.BindableViewHolder;
|
||||
import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
import me.grishka.appkit.utils.V;
|
||||
import me.grishka.appkit.views.FragmentRootLinearLayout;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okio.BufferedSink;
|
||||
import okio.Okio;
|
||||
import okio.Sink;
|
||||
@@ -195,6 +200,14 @@ public class PhotoViewer implements ZoomPanView.Listener{
|
||||
return true;
|
||||
})
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
toolbar.getMenu()
|
||||
.add(R.string.button_share)
|
||||
.setIcon(R.drawable.ic_fluent_share_24_regular)
|
||||
.setOnMenuItemClickListener(item -> {
|
||||
shareCurrentFile();
|
||||
return true;
|
||||
})
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
uiOverlay.setAlpha(0f);
|
||||
videoControls=uiOverlay.findViewById(R.id.video_player_controls);
|
||||
videoSeekBar=uiOverlay.findViewById(R.id.seekbar);
|
||||
@@ -441,6 +454,44 @@ public class PhotoViewer implements ZoomPanView.Listener{
|
||||
pauseVideo();
|
||||
}
|
||||
|
||||
private void shareCurrentFile(){
|
||||
Attachment att=attachments.get(pager.getCurrentItem());
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
|
||||
if(att.type==Attachment.Type.IMAGE){
|
||||
UrlImageLoaderRequest req=new UrlImageLoaderRequest(att.url);
|
||||
try{
|
||||
File file=ImageCache.getInstance(activity).getFile(req);
|
||||
if(file==null){
|
||||
shareAfterDownloading(att);
|
||||
return;
|
||||
}
|
||||
MastodonAPIController.runInBackground(()->{
|
||||
File imageDir = new File(activity.getCacheDir(), ".");
|
||||
File renamedFile;
|
||||
file.renameTo(renamedFile = new File(imageDir, Uri.parse(att.url).getLastPathSegment()));
|
||||
Uri outputUri = FileProvider.getUriForFile(activity, activity.getPackageName() + ".fileprovider", renamedFile);
|
||||
|
||||
// setting type to image
|
||||
intent.setType(mimeTypeForFileName(outputUri.getLastPathSegment()));
|
||||
|
||||
intent.putExtra(Intent.EXTRA_STREAM, outputUri);
|
||||
|
||||
// calling startactivity() to share
|
||||
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.button_share)));
|
||||
|
||||
});
|
||||
}catch(IOException x){
|
||||
Log.w(TAG, "shareCurrentFile: ", x);
|
||||
Toast.makeText(activity, R.string.error, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}else{
|
||||
shareAfterDownloading(att);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void saveCurrentFile(){
|
||||
if(Build.VERSION.SDK_INT>=29){
|
||||
doSaveCurrentFile();
|
||||
@@ -545,6 +596,47 @@ public class PhotoViewer implements ZoomPanView.Listener{
|
||||
Toast.makeText(activity, R.string.downloading, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
private void shareAfterDownloading(Attachment att){
|
||||
Uri uri=Uri.parse(att.url);
|
||||
|
||||
MastodonAPIController.runInBackground(()->{
|
||||
try {
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url(att.url).build();
|
||||
|
||||
Response response = client.newCall(request).execute();
|
||||
Toast.makeText(activity, R.string.downloading, Toast.LENGTH_SHORT);
|
||||
if (!response.isSuccessful()) {
|
||||
throw new IOException("" + response);
|
||||
}
|
||||
|
||||
File imageDir = new File(activity.getCacheDir(), ".");
|
||||
InputStream inputStream = response.body().byteStream();
|
||||
File file = new File(imageDir, uri.getLastPathSegment());
|
||||
FileOutputStream outputStream = new FileOutputStream(file);
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead);
|
||||
}
|
||||
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
|
||||
Uri outputUri = FileProvider.getUriForFile(activity, activity.getPackageName() + ".fileprovider", file);
|
||||
|
||||
intent.setType(mimeTypeForFileName(outputUri.getLastPathSegment()));
|
||||
intent.putExtra(Intent.EXTRA_STREAM, outputUri);
|
||||
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.button_share)));
|
||||
} catch(IOException e){
|
||||
Toast.makeText(activity, R.string.error, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void onAudioFocusChanged(int change){
|
||||
if(change==AudioManager.AUDIOFOCUS_LOSS || change==AudioManager.AUDIOFOCUS_LOSS_TRANSIENT || change==AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK){
|
||||
pauseVideo();
|
||||
|
||||
@@ -82,9 +82,9 @@ public class ComposePollViewController{
|
||||
maxPollOptionLength=instance.configuration.polls.maxCharactersPerOption;
|
||||
} else {
|
||||
if(instance!=null && instance.pollLimits!=null && instance.pollLimits.maxOptions>0)
|
||||
maxPollOptions=instance.pollLimits.maxOptions;
|
||||
maxPollOptions= (int) instance.pollLimits.maxOptions;
|
||||
if(instance!=null && instance.pollLimits!=null && instance.pollLimits.maxOptionChars>0)
|
||||
maxPollOptionLength=instance.pollLimits.maxOptionChars;
|
||||
maxPollOptionLength= (int) instance.pollLimits.maxOptionChars;
|
||||
}
|
||||
|
||||
pollOptionsView=pollWrap.findViewById(R.id.poll_options);
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<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="M5.754,22.005C4.511,22.004 3.504,20.997 3.504,19.755L3.502,5.75C3.502,4.508 4.509,3.5 5.752,3.5L6.499,3.499L6.5,2.75C6.5,2.37 6.782,2.057 7.148,2.007L7.25,2C7.63,2 7.944,2.282 7.993,2.648L8,2.75L7.999,3.499H11.001L11.002,2.75C11.002,2.37 11.284,2.057 11.65,2.007L11.752,2C12.132,2 12.445,2.282 12.495,2.648L12.502,2.75L12.501,3.499H15.499L15.5,2.75C15.5,2.37 15.782,2.057 16.148,2.007L16.25,2C16.63,2 16.944,2.282 16.993,2.648L17,2.75L16.999,3.499L17.749,3.5C18.991,3.5 19.998,4.507 19.999,5.75L20,16.75C20,16.809 19.993,16.868 19.979,16.925L19.95,17.019L19.905,17.115L19.885,17.147C19.856,17.195 19.821,17.24 19.78,17.28L15.276,21.785C15.249,21.811 15.221,21.836 15.191,21.858L15.276,21.785C15.243,21.817 15.208,21.846 15.171,21.872L15.083,21.924L14.967,21.971L14.854,21.997L14.8,22.003L14.745,22.005H5.754ZM17.748,5H5.742C5.333,5.005 5.002,5.339 5.002,5.75L5.004,19.754C5.004,20.169 5.34,20.505 5.754,20.505L13.994,20.504L13.995,18.25C13.995,17.059 14.92,16.084 16.091,16.005L16.245,16H18.499L18.499,5.75C18.499,5.336 18.163,5 17.748,5ZM17.438,17.5H16.245C15.866,17.5 15.552,17.782 15.502,18.148L15.495,18.25L15.494,19.444L17.438,17.5ZM7.25,16H11.248C11.663,16 11.998,16.336 11.998,16.75C11.998,17.13 11.716,17.444 11.35,17.493L11.248,17.5H7.25C6.836,17.5 6.5,17.164 6.5,16.75C6.5,16.37 6.782,16.056 7.148,16.007L7.25,16H11.248H7.25ZM7.25,12H16.248C16.663,12 16.998,12.336 16.998,12.75C16.998,13.13 16.716,13.443 16.35,13.493L16.248,13.5H7.25C6.836,13.5 6.5,13.164 6.5,12.75C6.5,12.37 6.782,12.057 7.148,12.007L7.25,12H16.248H7.25ZM7.25,8H16.248C16.663,8 16.998,8.336 16.998,8.75C16.998,9.13 16.716,9.443 16.35,9.493L16.248,9.5H7.25C6.836,9.5 6.5,9.164 6.5,8.75C6.5,8.37 6.782,8.057 7.148,8.007L7.25,8H16.248H7.25Z"
|
||||
android:fillColor="@color/fluent_default_icon_tint"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,17 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M-2.996,-2.995L28,-2.995L28,28L-2.996,28ZM12.371,11.8c-0.449,-0.466 -1.157,0.217 -0.675,0.651l1.912,1.846c7.457,7.199 9.861,9.522 7.457,7.199l2.404,2.323c0.45,0.435 1.125,-0.217 0.675,-0.652z"/>
|
||||
<path
|
||||
android:pathData="m11,15c0,-0.351 0.06,-0.687 0.171,-1L4.253,14c-1.242,0 -2.249,1.007 -2.249,2.249v0.578c0,0.893 0.319,1.756 0.898,2.435 1.566,1.834 3.952,2.739 7.098,2.739 0.398,0 0.783,-0.014 1.156,-0.043 -0.101,-0.301 -0.156,-0.623 -0.156,-0.958v-0.535c-0.321,0.024 -0.655,0.036 -1,0.036 -2.738,0 -4.704,-0.746 -5.958,-2.214C3.695,17.881 3.504,17.362 3.504,16.827v-0.578c0,-0.414 0.335,-0.749 0.749,-0.749L11,15.5ZM10,2.005c2.761,0 5,2.239 5,5 0,2.761 -2.239,5 -5,5 -2.761,0 -5,-2.239 -5,-5 0,-2.761 2.239,-5 5,-5zM10,3.505c-1.933,0 -3.5,1.567 -3.5,3.5 0,1.933 1.567,3.5 3.5,3.5 1.933,0 3.5,-1.567 3.5,-3.5 0,-1.933 -1.567,-3.5 -3.5,-3.5zM12,15c0,-1.105 0.895,-2 2,-2h7c1.105,0 2,0.896 2,2v6c0,1.105 -0.895,2 -2,2h-7c-1.105,0 -2,-0.895 -2,-2zM14.5,16c-0.276,0 -0.5,0.224 -0.5,0.5 0,0.276 0.224,0.5 0.5,0.5h6c0.276,0 0.5,-0.224 0.5,-0.5 0,-0.276 -0.224,-0.5 -0.5,-0.5zM14.5,19c-0.276,0 -0.5,0.224 -0.5,0.5 0,0.276 0.224,0.5 0.5,0.5h6c0.276,0 0.5,-0.224 0.5,-0.5 0,-0.276 -0.224,-0.5 -0.5,-0.5z"
|
||||
android:fillColor="@color/fluent_default_icon_tint"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="m11.568,12.296c-0.449,-0.466 -1.157,0.217 -0.675,0.651l1.912,1.846c7.457,7.199 9.861,9.522 7.457,7.199l2.404,2.323c0.45,0.435 1.125,-0.217 0.675,-0.652z"
|
||||
android:strokeWidth="0.625337"
|
||||
android:fillColor="@color/fluent_default_icon_tint"/>
|
||||
</vector>
|
||||
@@ -217,59 +217,30 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
<org.joinmastodon.android.ui.views.FloatingHintEditTextLayout
|
||||
android:id="@+id/note_edit_wrap"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/username"
|
||||
android:id="@+id/note_edit_wrap"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
app:labelTextColor="@color/m3_outlined_text_field_label"
|
||||
android:foreground="@drawable/bg_m3_outlined_text_field"
|
||||
android:visibility="gone">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/note_edit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="52dp"
|
||||
android:paddingVertical="15dp"
|
||||
android:textColor="?colorM3OnSurface"
|
||||
android:maxHeight="200dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="8dp"
|
||||
android:padding="16dp"
|
||||
android:background="@null"
|
||||
android:inputType="text|textMultiLine|textCapSentences"
|
||||
android:singleLine="false"
|
||||
android:background="@drawable/bg_note_edit"
|
||||
android:paddingEnd="52dp"
|
||||
android:paddingStart="20dp"
|
||||
android:elevation="0dp"
|
||||
android:hint="@string/mo_personal_note"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="end">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/note_save_btn"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="52dp"
|
||||
android:visibility="invisible"
|
||||
android:background="@drawable/bg_button_m3_text_circle"
|
||||
android:tooltipText="@string/sk_confirm_changes"
|
||||
android:contentDescription="@string/sk_confirm_changes"
|
||||
android:src="@drawable/ic_fluent_checkmark_24_regular"/>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/note_save_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
style="?android:progressBarStyleSmall"
|
||||
android:indeterminate="true"
|
||||
android:visibility="gone" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</FrameLayout>
|
||||
</org.joinmastodon.android.ui.views.FloatingHintEditTextLayout>
|
||||
|
||||
<org.joinmastodon.android.ui.views.LinkedTextView
|
||||
android:id="@+id/bio"
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular"/>
|
||||
<item android:id="@+id/open_timeline" android:title="@string/mo_instance_info_open_timeline" android:icon="@drawable/ic_fluent_timeline_24_regular"/>
|
||||
<item android:id="@+id/open_in_browser" android:title="@string/open_in_browser" android:icon="@drawable/ic_fluent_globe_24_regular"/>
|
||||
</menu>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<group android:id="@+id/menu_group1">
|
||||
<item android:id="@+id/edit_note" android:title="@string/sk_add_note" android:icon="@drawable/ic_fluent_person_note_24_regular" />
|
||||
<item android:id="@+id/edit_note" android:title="@string/sk_add_note" android:icon="@drawable/ic_fluent_notepad_24_regular" android:showAsAction="ifRoom" />
|
||||
</group>
|
||||
<group android:id="@+id/menu_group2">
|
||||
<item android:id="@+id/manage_user_lists" android:title="@string/sk_lists_with_user" android:icon="@drawable/ic_fluent_people_24_regular"/>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<item android:id="@+id/followed_hashtags" android:title="@string/sk_hashtags_you_follow" android:icon="@drawable/ic_fluent_number_symbol_24_regular"/>
|
||||
<item android:id="@+id/bookmarks" android:title="@string/bookmarks" android:icon="@drawable/ic_fluent_bookmark_multiple_24_regular" android:showAsAction="always"/>
|
||||
<item android:id="@+id/manage_user_lists" android:title="@string/sk_your_lists" android:icon="@drawable/ic_fluent_people_24_regular"/>
|
||||
<item android:id="@+id/favorites" android:title="@string/your_favorites" android:icon="@drawable/ic_fluent_star_24_regular" android:showAsAction="always"/>
|
||||
<item android:id="@+id/favorites" android:title="@string/your_favorites" android:icon="@drawable/ic_fluent_star_24_regular"/>
|
||||
<item android:id="@+id/muted_accounts" android:title="@string/sk_muted_accounts" android:icon="@drawable/ic_fluent_speaker_off_24_regular"/>
|
||||
<item android:id="@+id/blocked_accounts" android:title="@string/sk_blocked_accounts" android:icon="@drawable/ic_fluent_shield_24_regular"/>
|
||||
<item android:id="@+id/scheduled" android:title="@string/sk_unsent_posts" android:icon="@drawable/ic_fluent_folder_open_24_regular" android:showAsAction="always"/>
|
||||
|
||||
@@ -93,4 +93,5 @@
|
||||
<string name="mo_settings_show_posts_without_alt_summary">سيتم إخفاء المنشورات في جميع الخيوط الزمنية، ولكن يمكن كشفها في خيوط المحادثات وفي الإشعارات</string>
|
||||
<string name="mo_swap_bookmark_with_reblog">استبدال إجراء الإضافة إلى الفواصل المرجعية بإعادة النشر</string>
|
||||
<string name="mo_setting_haptic_feedback_summary">اهتز عند التفاعل مع المنشورات</string>
|
||||
<string name="mo_notification_filter_reset">إعادة التعيين إلى الإفتراضية</string>
|
||||
</resources>
|
||||
@@ -99,4 +99,5 @@
|
||||
<string name="mo_unmuting">Stummschaltung aufheben…</string>
|
||||
<string name="mo_confirm_to_mute_hashtag">Sind Sie sicher, dass Sie diesen Hashtag stummschalten möchten\?</string>
|
||||
<string name="mo_filter_notifications">Benachrichtigungen filtern</string>
|
||||
<string name="mo_notification_filter_reset">Auf Standardwerte zurücksetzen</string>
|
||||
</resources>
|
||||
@@ -91,4 +91,5 @@
|
||||
<string name="mo_relocate_publish_button">Reloki aifŝi butonon</string>
|
||||
<string name="mo_duration_days_3">3 tagoj</string>
|
||||
<string name="mo_setting_remote_follower_summary">Montri sekvantojn de aliaj instancoj</string>
|
||||
<string name="mo_notification_filter_reset">Restarigi al defaŭlta</string>
|
||||
</resources>
|
||||
@@ -96,4 +96,5 @@
|
||||
<string name="mo_mute_hashtag">Silenciar etiqueta</string>
|
||||
<string name="mo_confirm_to_mute_hashtag">¿Seguro que quieres silenciar esta etiqueta\?</string>
|
||||
<string name="mo_filter_notifications">Filtrar las notificaciones</string>
|
||||
<string name="mo_notification_filter_reset">Restablecer valores por defecto</string>
|
||||
</resources>
|
||||
@@ -92,4 +92,5 @@
|
||||
<string name="mo_instance_registration_open">Aberto</string>
|
||||
<string name="mo_duration_days_3">3 días</string>
|
||||
<string name="mo_setting_remote_follower_summary">Mostrar seguidoras doutras instancias</string>
|
||||
<string name="mo_notification_filter_reset">Restablecer por defecto</string>
|
||||
</resources>
|
||||
@@ -93,4 +93,5 @@
|
||||
<string name="mo_double_tap_to_search">Ketuk ganda untuk membuka pencarian</string>
|
||||
<string name="mo_setting_haptic_feedback_summary">Bergetar ketika berinteraksi dengan kiriman</string>
|
||||
<string name="mo_confirm_to_mute_hashtag">Apakah Anda yakin ingin membisukan tagar ini\?</string>
|
||||
<string name="mo_notification_filter_reset">Atur ulang ke bawaan</string>
|
||||
</resources>
|
||||
@@ -98,4 +98,5 @@
|
||||
<string name="mo_confirm_to_mute_hashtag">Você tem certeza que quer silenciar esta hashtag\?</string>
|
||||
<string name="mo_mutes">Silenciados</string>
|
||||
<string name="mo_filter_notifications">Filtrar notificações</string>
|
||||
<string name="mo_notification_filter_reset">Redefinir para padrão</string>
|
||||
</resources>
|
||||
@@ -93,4 +93,5 @@
|
||||
<string name="mo_double_tap_to_search">Apăsați dublu pentru a deschide căutarea</string>
|
||||
<string name="mo_confirm_to_mute_hashtag">Sunteți sigur că doriți să amuțiți acest hashtag\?</string>
|
||||
<string name="mo_filter_notifications">Filtrați notificările</string>
|
||||
<string name="mo_notification_filter_reset">Resetați la valorile implicite</string>
|
||||
</resources>
|
||||
@@ -70,4 +70,23 @@
|
||||
<string name="mo_setting_haptic_feedback_summary">Вибрировать при взаимодействии с постами</string>
|
||||
<string name="mo_color_palette_black_and_white">Чёрно-белая</string>
|
||||
<string name="mo_composer_behavior">Поведение экрана создания публикации</string>
|
||||
<string name="mo_unmute_hashtag">Включение звука у хештега</string>
|
||||
<string name="mo_show_media_preview">Показывать предварительный просмотр мультимедиа на временной ленте</string>
|
||||
<string name="mo_settings_show_posts_without_alt">Показать сообщения с отсутствующим альтернативным текстом у медиаконтента</string>
|
||||
<string name="mo_muted_accounts">Приглушённые аккаунты</string>
|
||||
<string name="mo_confirm_to_unmute_conversation">Вы уверены, что хотите включить звук в этой беседе?</string>
|
||||
<string name="mo_confirm_to_unmute_hashtag">Вы уверены, что хотите включить звук у данного хештега?</string>
|
||||
<string name="mo_blocked_accounts">Заблокированные аккаунты</string>
|
||||
<string name="mo_settings_show_posts_without_alt_summary">Сообщения будут скрыты во всех лентах, но их можно будет увидеть в темах и уведомлениях.</string>
|
||||
<string name="mo_confirm_to_mute_conversation">Вы уверены, что хотите приглушить эту беседу?</string>
|
||||
<string name="mo_notification_filter_reset">Восстановление значений по умолчанию</string>
|
||||
<string name="mo_muted_conversation_successfully">Беседа успешно приглушена</string>
|
||||
<string name="mo_mute_conversation">Приглушение беседы</string>
|
||||
<string name="mo_recent_emoji_cleared">Последние смайлы очищены</string>
|
||||
<string name="mo_mute_hashtag">Приглушение хештега</string>
|
||||
<string name="mo_filter_notifications">Фильтр уведомлений</string>
|
||||
<string name="mo_muting">Отключение звука…</string>
|
||||
<string name="mo_unmuting">Возвращение звука…</string>
|
||||
<string name="mo_double_tap_to_search">Тапните дважды, чтобы открыть поиск</string>
|
||||
<string name="mo_confirm_to_mute_hashtag">Вы уверены, что хотите приглушить данный хештег?</string>
|
||||
</resources>
|
||||
@@ -77,4 +77,6 @@
|
||||
<string name="mo_recent_emoji_cleared">Нещодавні емоджі очищено</string>
|
||||
<string name="mo_muted_accounts">Ігноровані облікові записи</string>
|
||||
<string name="mo_blocked_accounts">Заблоковані облікові записи</string>
|
||||
<string name="mo_notification_filter_reset">Скинути до замовчування</string>
|
||||
<string name="mo_filter_notifications">Фільтрувати сповіщення</string>
|
||||
</resources>
|
||||
@@ -5,8 +5,8 @@
|
||||
<string name="mo_disable_dividers">禁用帖文分隔线</string>
|
||||
<string name="mo_relocate_publish_button">重新定位发布按钮</string>
|
||||
<string name="mo_hide_compose_button_while_scrolling_setting">滚动时隐藏撰写按钮</string>
|
||||
<string name="mo_welcome_text">要开始使用,请在下面输入您的主实例的域名。</string>
|
||||
<string name="mo_personal_note">添加关于此个人资料的备注</string>
|
||||
<string name="mo_welcome_text">要开始使用,请在下面输入您的所在实例的域名。</string>
|
||||
<string name="mo_personal_note">添加关于此账户的备注</string>
|
||||
<string name="mo_personal_note_confirm">确认更改备注</string>
|
||||
<string name="mo_personal_note_update_failed">保存备注失败</string>
|
||||
<string name="mo_settings_contribute">为Moshidon做出贡献</string>
|
||||
@@ -14,7 +14,7 @@
|
||||
<string name="mo_update_ready">Moshidon %s 已下载并准备安装。</string>
|
||||
<string name="mo_no_image_desc_title">无图片描述</string>
|
||||
<string name="mo_no_image_desc">包含的图像没有描述。请考虑添加描述,以便让视障人士参与。</string>
|
||||
<string name="mo_clear_recent_emoji">清除最近使用的表情符号</string>
|
||||
<string name="mo_clear_recent_emoji">清除最近使用的emoji</string>
|
||||
<string name="mo_disable_relocate_publish_button_to_enable_customization">禁用重新定位发布按钮以允许自定义</string>
|
||||
<string name="mo_poll_option_add">添加新的投票选项</string>
|
||||
<string name="mo_fab_compose">撰写</string>
|
||||
@@ -22,7 +22,7 @@
|
||||
<string name="mo_filtered">已过滤:%s</string>
|
||||
<string name="mo_disable_reminder_to_add_alt_text">禁用添加ALT文本的提醒</string>
|
||||
<string name="mo_add_custom_server_local_timeline">添加自定义实例的本地时间线</string>
|
||||
<string name="mo_notification_action_replied">成功回复了 %s 的帖文</string>
|
||||
<string name="mo_notification_action_replied">成功回复 %s 的帖文</string>
|
||||
<string name="mo_duration_minutes_5">5分钟</string>
|
||||
<string name="mo_duration_hours_6">6小时</string>
|
||||
<string name="mo_duration_days_1">1天</string>
|
||||
@@ -33,14 +33,14 @@
|
||||
<string name="mo_duration_hours_1">1小时</string>
|
||||
<string name="mo_change_default_reply_visibility_to_unlisted">默认以“不公开可见”发送回复</string>
|
||||
<string name="mo_duration_days_7">7天</string>
|
||||
<string name="mo_composer_behavior">写作行为</string>
|
||||
<string name="mo_composer_behavior">编辑器行为</string>
|
||||
<string name="mo_miscellaneous_settings">杂项设置</string>
|
||||
<string name="mo_share_open_url">应用内打开</string>
|
||||
<string name="mo_disable_double_tap_to_swipe_between_tabs">禁用双击以切换标签页</string>
|
||||
<string name="mo_download_latest_nightly_release">下载最新的每日版</string>
|
||||
<string name="mo_load_remote_followers">加载远程账户的关注者和粉丝</string>
|
||||
<string name="mo_load_remote_followers">加载外站账户的关注和粉丝</string>
|
||||
<string name="mo_mention_reblogger_automatically">自动在回复中提及转发帖子的账户</string>
|
||||
<string name="mo_swap_bookmark_with_reblog">使用转载操作替换收藏操作</string>
|
||||
<string name="mo_swap_bookmark_with_reblog">交换转贴与收藏的位置</string>
|
||||
<string name="mo_confirm_unfollow_title">取消关注</string>
|
||||
<string name="mo_confirm_unfollow">确认取消关注 %s</string>
|
||||
<string name="mo_instance_admin">管理者</string>
|
||||
@@ -58,7 +58,7 @@
|
||||
<string name="mo_setting_uniform_summary">全部通知统一使用应用图标</string>
|
||||
<string name="mo_setting_reduced_motion_summary">禁用互动动画</string>
|
||||
<string name="mo_setting_play_gif_summary">自动播放头像与表情中的GIF图片</string>
|
||||
<string name="mo_setting_remote_follower_summary">显示来自其他实例的关注者</string>
|
||||
<string name="mo_setting_remote_follower_summary">显示来自其他实例的粉丝</string>
|
||||
<string name="mo_setting_relocate_publish_summary">将发布按钮移至底栏</string>
|
||||
<string name="mo_swap_bookmark_with_reblog_summary">在通知中收藏或转发帖文</string>
|
||||
<string name="mo_setting_disable_swipe_summary">滑动以切换浏览的时间线</string>
|
||||
@@ -67,13 +67,13 @@
|
||||
<string name="mo_setting_default_reply_privacy_summary">回复将不会被显示在发现功能中</string>
|
||||
<string name="mo_setting_interaction_count_summary">在时间线中显示与帖文互动的人数</string>
|
||||
<string name="mo_enable_dividers">显示帖文分割线</string>
|
||||
<string name="mo_notification_management_settings">管理消息通知</string>
|
||||
<string name="mo_notification_management_settings">管理通知</string>
|
||||
<string name="mo_setting_true_black_summary">AMOLED屏幕上可能更省电</string>
|
||||
<string name="mo_double_tap_to_swipe_between_tabs">双击以在选项卡之间滑动</string>
|
||||
<string name="mo_unmute_hashtag">取消禁用话题标签通知</string>
|
||||
<string name="mo_haptic_feedback">震动反馈</string>
|
||||
<string name="mo_show_media_preview">在时间线中显示媒体文件预览</string>
|
||||
<string name="mo_settings_show_posts_without_alt">显示含有缺少 alt 文本的媒体的嘟文</string>
|
||||
<string name="mo_settings_show_posts_without_alt">显示含有缺少 alt 文本的媒体的贴文</string>
|
||||
<string name="mo_muted_accounts">已静音的账户</string>
|
||||
<string name="mo_camera_not_available">没有可用的摄像头!</string>
|
||||
<string name="mo_unmuted_conversation_successfully">已成功取消禁用对话通知</string>
|
||||
@@ -81,7 +81,7 @@
|
||||
<string name="mo_confirm_to_unmute_hashtag">您确定要取消禁用此话题标签的通知吗?</string>
|
||||
<string name="mo_blocked_accounts">已屏蔽的账户</string>
|
||||
<string name="mo_color_palette_black_and_white">黑白</string>
|
||||
<string name="mo_settings_show_posts_without_alt_summary">嘟文将从所有时间线中隐藏,但可在对话和通知中显示</string>
|
||||
<string name="mo_settings_show_posts_without_alt_summary">贴文将从所有时间线中隐藏,但可在对话和通知中显示</string>
|
||||
<string name="mo_confirm_to_mute_conversation">您确定要禁用此对话的通知吗?</string>
|
||||
<string name="mo_muted_conversation_successfully">已成功禁用对话通知</string>
|
||||
<string name="mo_unmute_conversation">取消禁用对话通知</string>
|
||||
@@ -91,7 +91,8 @@
|
||||
<string name="mo_muting">禁用通知…</string>
|
||||
<string name="mo_unmuting">取消禁用通知…</string>
|
||||
<string name="mo_double_tap_to_search">双击以打开搜索</string>
|
||||
<string name="mo_setting_haptic_feedback_summary">在与嘟文交互时震动</string>
|
||||
<string name="mo_setting_haptic_feedback_summary">在与贴文交互时震动</string>
|
||||
<string name="mo_confirm_to_mute_hashtag">您确定要禁用此话题标签的通知吗?</string>
|
||||
<string name="mo_filter_notifications">过滤通知</string>
|
||||
<string name="mo_notification_filter_reset">重置为默认值</string>
|
||||
</resources>
|
||||
9
metadata/de-DE/changelogs/102.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Diese neue Version kommt mit den folgenden Änderungen:
|
||||
- Neues, komplett aktualisiertes Material 3 Design von Upstream
|
||||
- Unterstützung für UnifiedPush-Benachrichtigungen (Danke @FineFindus!)
|
||||
- Sperrungen und Stummschaltungen sind jetzt in deinem Profil sichtbar
|
||||
- Hashtags können jetzt direkt in der Hashtag-Ansicht stummgeschaltet werden
|
||||
- Emoji-Reaktionen sind jetzt auf Instanzen möglich, die sie unterstützen (Danke @sk22!)
|
||||
- Das Bearbeiten von Filtern in der App ist jetzt auch möglich (Danke an Upstream)
|
||||
- Medienvorschauen können jetzt in Timelines ausgeblendet werden
|
||||
- Neues Schwarz-Weiß-Thema hinzugefügt
|
||||
BIN
metadata/de-DE/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/de-DE/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
metadata/de-DE/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/de-DE/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
metadata/de-DE/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 954 KiB |
BIN
metadata/de-DE/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
2
metadata/en-US/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
|
||||
BIN
metadata/en-US/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 170 KiB |
BIN
metadata/en-US/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 925 KiB |
|
Before Width: | Height: | Size: 1.9 MiB |
BIN
metadata/en-US/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 221 KiB |
BIN
metadata/en-US/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 176 KiB |
BIN
metadata/en-US/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 934 KiB |
BIN
metadata/en-US/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1010 KiB |
|
Before Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 635 KiB |
BIN
metadata/es-ES/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/es-ES/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 1023 KiB |
BIN
metadata/es-ES/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/es-ES/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
metadata/es-ES/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 945 KiB |
BIN
metadata/es-ES/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
11
metadata/es/changelogs/102.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Esta nueva versión viene con:
|
||||
- Material design 3 completamente actualizado
|
||||
- Notificaciones UnifiedPush (¡Gracias @FineFindus!)
|
||||
- Los bloqueos y silenciamientos son ahora visibles desde tu perfil
|
||||
- Ahora puedes silenciar hashtags directamente desde la vista de hashtags.
|
||||
- Reacciones Emoji ahora son una soportados (¡Gracias @sk22!)
|
||||
- Ahora también es posible editar filtros en la aplicación (Gracias)
|
||||
- Ahora puedes ocultar las vistas previas de los medios en las líneas de tiempo.
|
||||
- Tema en blanco y negro
|
||||
- Es posible silenciar conversaciones
|
||||
- Pequeñas correcciones mejoras
|
||||
6
metadata/es/changelogs/110.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
- Ahora se guarda el último registro de fallos y está listo para copiarse desde la página de configuración "Acerca de Megalodon".
|
||||
- Añadir y mostrar notas personales en los perfiles
|
||||
- Las modificaciones de texto ahora se resaltan en el historial de edición
|
||||
- Akkoma: Los mensajes citados se muestran en la línea de tiempo; traducción; vista previa de los mensajes antes de publicarlos
|
||||
- Añadidos marcadores y tus favoritos como líneas de tiempo pinnables
|
||||
- Varios errores corregidos
|
||||
@@ -1,9 +1,8 @@
|
||||
- Fragmen pengaturan yang didesain ulang sepenuhnya
|
||||
- Fragmen pengaturan yg didesain ulang sepenuhnya
|
||||
- Pintasan kamera baru ditambahkan ke fragmen Komposisi
|
||||
- Memperbaiki banyak kerusakan pada Calckey
|
||||
- Banyak perbaikan pada Akkoma/Pleroma
|
||||
- Banyak perbaikan pada filter perilaku
|
||||
- Lembar Akun baru yang didesain ulang
|
||||
- Tambahkan opsi untuk mengubah gaya konten postingan (Teks biasa, penurunan harga, dll) pada instance yang mendukungnya
|
||||
- Tambahkan kemampuan untuk melihat info server seseorang dengan mengetuk nama penggunanya di dalam profil siapa pun
|
||||
- Banyak sekali perbaikan dan peningkatan kecil
|
||||
- Lembar Akun baru yg didesain ulang
|
||||
- Tambahkan opsi untuk mengubah gaya konten postingan (Teks biasa, penurunan harga, dll) pada server yang mendukungnya
|
||||
- Tambahkan fitur untuk melihat info server seseorang dengan mengetuk nama penggunanya di dalam profil siapa pun
|
||||
|
||||
11
metadata/id/changelogs/102.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Rilis baru ini hadir dgn:
|
||||
- Desain Material 3 baru
|
||||
- Dukungan notifikasi UnifiedPush
|
||||
- Blokir & bisu sekarang terlihat dr profil Anda
|
||||
- Sekarang dapat menonaktifkan tagar langsung dari tampilan tagar
|
||||
- Reaksi emoji kini menjadi hal yg penting pada server yg mendukungnya
|
||||
- Edit filter di aplikasi sekarang bisa
|
||||
- Sekarang dapat menyembunyikan pratinjau media dr lini masa
|
||||
- Tema hitam baru ditambahkan
|
||||
- Mematikan percakapan sekarang dapat dilakukan
|
||||
- Bnyk perbaikan & peningkatan kecil
|
||||
6
metadata/id/changelogs/110.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
- Log kerusakan terbaru kini disimpan dan siap disalin dari halaman pengaturan "Tentang Megalodon".
|
||||
- Tambahkan dan tampilkan catatan pribadi di profil
|
||||
- Modifikasi teks sekarang disorot dalam riwayat edit
|
||||
- Akkoma: Postingan yang dikutip ditampilkan di lini masa; terjemahan; pratinjau posting sebelum dipublikasikan
|
||||
- Menambahkan Markah dan Favorit Anda sebagai lini masa yang dapat disematkan
|
||||
- Berbagai perbaikan kutu
|
||||
BIN
metadata/it-IT/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/it-IT/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 931 KiB |
BIN
metadata/it-IT/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/it-IT/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
metadata/it-IT/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 944 KiB |
BIN
metadata/it-IT/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
metadata/pt-BR/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/pt-BR/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 939 KiB |
BIN
metadata/pt-BR/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/pt-BR/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/pt-BR/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 943 KiB |
BIN
metadata/pt-BR/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
metadata/pt-PT/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/pt-PT/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 939 KiB |
BIN
metadata/pt-PT/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/pt-PT/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/pt-PT/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 943 KiB |
BIN
metadata/pt-PT/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
9
metadata/ru/changelogs/101.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
- Полностью переработан фрагмент настроек
|
||||
- Во фрагмент композиции добавлен новый ярлык камеры.
|
||||
- Исправлено множество сбоев в Calckey.
|
||||
- Множество улучшений Akkoma/Pleroma.
|
||||
- Множество улучшений в поведении фильтров.
|
||||
- Новый переработанный лист счета.
|
||||
- Добавлена возможность изменения стиля контента публикации (обычный текст, Markdown и т. д.) в экземплярах, которые это поддерживают.
|
||||
- Добавьте возможность просматривать информацию о своем сервере, нажав на свое имя пользователя в чьем-либо профиле.
|
||||
- Множество мелких исправлений и улучшений
|
||||
1
metadata/ru/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Android клиент Mastodon в дизайне Material You и дополнительными функциями
|
||||
1
metadata/ru/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moshidon
|
||||
11
metadata/uk/changelogs/102.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Цей новий випуск містить:
|
||||
- Новий, повністю оновлений дизайн Material 3
|
||||
- Підтримка сповіщень UnifiedPush (Дякуємо @FineFindus!)
|
||||
- Блокування та вимкнення звуку тепер видно з вашого профілю
|
||||
- Тепер ви можете вимкнути хештеги безпосередньо з вікна хештегів
|
||||
- Реакції емоджі тепер доступні для екземплярів, які її підтримують (Дякуємо @sk22!)
|
||||
- Редагування фільтрів у додатку тепер також можливе
|
||||
- Тепер можна приховати попередній перегляд медіа у стрічках
|
||||
- Додано нову чорно-білу тему
|
||||
- Тепер можливе вимкнення розмов
|
||||
- Багато дрібних виправлень і покращень
|
||||
6
metadata/uk/changelogs/110.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
- Останній журнал збоїв тепер зберігається готовий до копіювання зі сторінки налаштувань «Про Megalodon»
|
||||
- Додавайте та відображайте особисті нотатки в профілях
|
||||
- Зміни тексту тепер підсвічуються в історії редагувань
|
||||
- Akkoma: Цитовані повідомлення відображаються у стрічці; переклад; попередній перегляд дописів перед публікацією
|
||||
- Додано закладки та вподобане як стрічки, які можна закріпити
|
||||
- Різні виправлення помилок
|
||||
@@ -2,4 +2,4 @@
|
||||
- Нові темно-сірі тони для всіх тем
|
||||
- Більш чіткий заповнений значок репосту
|
||||
- Анімація для кнопок взаємодії
|
||||
- Виправлення помилок (збій у деяких публікаціях, "Списки з", мова публікації за замовчуванням)
|
||||
- Виправлення помилок (збій у деяких публікаціях, «Списки з», мова публікації за замовчуванням)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- Налаштування кнопки "Опублікувати"
|
||||
- Відкривання посилань Fediverse у програмі
|
||||
- Налаштування кнопки «Опублікувати»
|
||||
- Відкривання посилань Федісвіту в застосунку
|
||||
- Тривале натискання кнопки репосту, щоб цитувати публікацію
|
||||
- Копіювання URL допису при тривалому натисканні кнопки "Репост"
|
||||
- Копіювання URL допису при тривалому натисканні кнопки «Репост»
|
||||
- Реалізовано видалення сповіщень
|
||||
- Окремі значки для сповіщень
|
||||
- Нові сірі кольори
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
- Чернетки та заплановані дописи
|
||||
- Відображання вихідної публікації під час відповіді
|
||||
- Фільтри, сумісні з Mastodon 4.0 (функції "приховати з попередженням" ще немає)
|
||||
- Фільтри, сумісні з Mastodon 4.0 (функції «Приховати з попередженням» ще немає)
|
||||
- Натисніть і утримуйте, щоб взаємодіяти з публікаціями з інших облікових записів, у які ви ввійшли
|
||||
- Значки у всіх меню
|
||||
- Перемикач для пересилання звітів
|
||||
- Додано згадку під час використання функції "Опублікувати про це".
|
||||
- Додано згадку під час використання функції «Опублікувати про це».
|
||||
- Опція: єдина іконка повідомлень
|
||||
- Можливість доступу до списку правил з налаштувань
|
||||
- Виправлення помилок
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- Нова домашня вкладка з загальнодоступними стрічками
|
||||
- Показ оголошень сервера
|
||||
- Текст масштабується відповідно до налаштувань системи
|
||||
- Покращено фільтрацію ("Приховати з попередженням" ще не працює) від @thiagojedi
|
||||
- Покращено фільтрацію («Приховати з попередженням» ще не працює) від @thiagojedi
|
||||
- Функції керування списком
|
||||
- Видаляйте послідовників, м'яко заблокувавши їх
|
||||
- Заборонено зв'язки з фашистами
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
- Більше категорій сповіщень
|
||||
- Додано засіб відкриття файлів
|
||||
- Підказувати під час збереження відредагованої чернетки
|
||||
- Можливість відключити кнопку "Переглянути нові публікації"
|
||||
- Можливість відключити кнопку «Переглянути нові публікації»
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
- Більше категорій сповіщень
|
||||
- Додано засіб відкриття файлів
|
||||
- Підказувати під час збереження відредагованої чернетки
|
||||
- Можливість відключити кнопку "Переглянути нові публікації"
|
||||
- Можливість відключити кнопку «Переглянути нові публікації»
|
||||
|
||||
@@ -1 +1 @@
|
||||
Тепер додано необов’язковий перемикач для переміщення кнопки "Опублікувати" в більш доступне положення! Тепер це за замовчуванням!
|
||||
Тепер додано необов’язковий перемикач для переміщення кнопки «Опублікувати» в більш доступне положення! Тепер це за замовчуванням!
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
Випуск 97 додає:
|
||||
- Нову функцію користувацьких локальних стрічок. Доступ до нього можна отримати в меню додавання стрічок
|
||||
- Нову функцію користувацьких локальних стрічок. Доступ до неї можна отримати в меню додавання стрічок
|
||||
- Незначні виправлення та покращення
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
Moshidon - це модифікована версія офіційної програми <a href="https://github.com/mastodon/mastodon-android"> Mastodon для Android </a>, до якої додано важливі функції, яких немає в офіційній програмі, як-от об’єднана стрічка, приховані дописи та переглядач описів зображень.
|
||||
Moshidon — це модифікована версія офіційної програми <a href="https://github.com/mastodon/mastodon-android"> Mastodon для Android </a>, до якої додано важливі функції, яких немає в офіційній програмі, як-от об’єднана стрічка, приховані дописи та переглядач описів зображень.
|
||||
|
||||
<b>Ключові особливості</b>
|
||||
|
||||
- <b>Багато кольорів</b>: Тема "Material You" і багато барвистих варіантів!
|
||||
- <b>Багато кольорів</b>: Тема «Material You» і багато барвистих варіантів!
|
||||
- <b>Відфільтровані дописи!</b>: можливість відображати відфільтровані дописи з попередженням!
|
||||
- <b>Кнопка перекладу</b>: додає кнопку перекладу!
|
||||
- <b>Засіб вибору мови</b>: Додано засіб вибору мови для публікації!
|
||||
- <b>Приховані дописи</b>: опублікуйте допис, не показуючи його в трендах, хештегах або загальнодоступній стрічці.
|
||||
- <b>Об'єднана стрічка</b>: переглядайте всі загальнодоступні дописи від людей з усіх інших районів Fediverse, до яких підключено ваш домашній сервер.
|
||||
- <b>Об’єднана стрічка</b>: переглядайте всі загальнодоступні дописи від людей з усіх інших районів Федісвіту, до яких підключено ваш домашній сервер.
|
||||
- <b>Засіб перегляду опису зображення</b>: швидко перевірте, чи є до зображення або відео доданий альтернативний текст.
|
||||
- <b>Закріплення дописів</b>: закріпіть найважливіші дописи у своєму профілі та подивіться, що закріпили інші, за допомогою вкладки «Закріплено».
|
||||
- <b>Слідкуйте за хештегами</b>: переглядайте нові публікації з певними хештегами безпосередньо на своїй домашній стрічці, підписавшись на них.
|
||||
- <b>Слідкуйте за хештегами</b>: переглядайте нові публікації з певними хештегами безпосередньо у своїй домашній стрічці, підписавшись на них.
|
||||
- <b>Відповідь на запити на підписку</b>: приймайте або відхиляйте запити на підписку з ваших сповіщень або спеціального списку запитів на підписку.
|
||||
- <b>Видалити та переписати чернетку</b>: улюблена функція, яка уможливила редагування без фактичної функції редагування.
|
||||
- <b>Додатково</b>: додає багато функцій інтерфейсу користувача, таких як іконки взаємодії в сповіщеннях і усунення багатьох незручностей завдяки оригінальному інтерфейсу користувача!
|
||||
|
||||
BIN
metadata/uk/images/phoneScreenshots/1.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/uk/images/phoneScreenshots/2.jpg
Normal file
|
After Width: | Height: | Size: 920 KiB |
BIN
metadata/uk/images/phoneScreenshots/3.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/uk/images/phoneScreenshots/4.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
metadata/uk/images/phoneScreenshots/5.jpg
Normal file
|
After Width: | Height: | Size: 984 KiB |
BIN
metadata/uk/images/phoneScreenshots/6.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
@@ -1,9 +1,9 @@
|
||||
- 重构设置界面
|
||||
- 在撰写嘟文中添加新的相机快捷方式
|
||||
- 在撰写贴文中添加新的相机快捷方式
|
||||
- 修复了 Calckey 上的许多崩溃问题
|
||||
- 对 Akkoma/Pleroma 进行了多项改进
|
||||
- 对过滤器行为进行了多项改进
|
||||
- 全新设计账户选择界面
|
||||
- 在支持的实例中添加更改嘟文内容样式(纯文本、Markdown等)的选项
|
||||
- 在支持的实例中添加更改贴文内容样式(纯文本、Markdown等)的选项
|
||||
- 在任何账户的资料页中点击用户名,即可查看其所在实例的信息
|
||||
- 其它小修复和改进
|
||||
|
||||
11
metadata/zh-CN/changelogs/102.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
这个版本的更新包括:
|
||||
- 来自上游的全新 Material 3 设计
|
||||
- UnifiedPush支持(感谢 @FineFindus !)
|
||||
- 现在可以在您的资料卡中看到拉黑和静音的账户
|
||||
- 现在可以直接从话题标签视图中静音话题标签
|
||||
- 为支持表情回应功能的实例适配表情回应功能(感谢 @sk22!)
|
||||
- 现在可以在应用中编辑过滤器(感谢上游)
|
||||
- 现在可以从时间线中隐藏媒体预览
|
||||
- 新增黑白主题
|
||||
- 现在可以静音对话
|
||||
- 许多小修复和改进
|
||||