mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 13:03:36 +00:00
[android] Remove somes Android warnings
Signed-off-by: Jean-Baptiste Charron <jeanbaptiste.charron@outlook.fr>
This commit is contained in:
committed by
Konstantin Pastbin
parent
860f58e60e
commit
332ab819b2
@@ -141,7 +141,6 @@ import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_HELP_CODE;
|
|||||||
import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_RECORD_TRACK_CODE;
|
import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_RECORD_TRACK_CODE;
|
||||||
import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_SETTINGS_CODE;
|
import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_SETTINGS_CODE;
|
||||||
import static app.organicmaps.sdk.util.PowerManagment.POWER_MANAGEMENT_TAG;
|
import static app.organicmaps.sdk.util.PowerManagment.POWER_MANAGEMENT_TAG;
|
||||||
import static app.organicmaps.sdk.util.concurrency.UiThread.runLater;
|
|
||||||
|
|
||||||
|
|
||||||
public class MwmActivity extends BaseMwmFragmentActivity
|
public class MwmActivity extends BaseMwmFragmentActivity
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import static app.organicmaps.settings.BackupSettingsFragment.MAX_BACKUPS_DEFAUL
|
|||||||
import static app.organicmaps.settings.BackupSettingsFragment.MAX_BACKUPS_KEY;
|
import static app.organicmaps.settings.BackupSettingsFragment.MAX_BACKUPS_KEY;
|
||||||
import static app.organicmaps.sdk.util.StorageUtils.isFolderWritable;
|
import static app.organicmaps.sdk.util.StorageUtils.isFolderWritable;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@@ -17,11 +16,6 @@ import android.text.style.AbsoluteSizeSpan;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.documentfile.provider.DocumentFile;
|
import androidx.documentfile.provider.DocumentFile;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import static app.organicmaps.backup.BackupUtils.isBackupFolderAvailable;
|
|||||||
import static app.organicmaps.settings.BackupSettingsFragment.BACKUP_FOLDER_PATH_KEY;
|
import static app.organicmaps.settings.BackupSettingsFragment.BACKUP_FOLDER_PATH_KEY;
|
||||||
import static app.organicmaps.settings.BackupSettingsFragment.BACKUP_INTERVAL_KEY;
|
import static app.organicmaps.settings.BackupSettingsFragment.BACKUP_INTERVAL_KEY;
|
||||||
import static app.organicmaps.settings.BackupSettingsFragment.LAST_BACKUP_TIME_KEY;
|
import static app.organicmaps.settings.BackupSettingsFragment.LAST_BACKUP_TIME_KEY;
|
||||||
import static app.organicmaps.sdk.util.StorageUtils.isFolderWritable;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
|||||||
@@ -150,9 +150,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
|
|||||||
|
|
||||||
BookmarkCollectionAdapter adapter = new BookmarkCollectionAdapter(getCategoryOrThrow(),
|
BookmarkCollectionAdapter adapter = new BookmarkCollectionAdapter(getCategoryOrThrow(),
|
||||||
mCategoryItems);
|
mCategoryItems);
|
||||||
adapter.setOnClickListener((v, item) -> {
|
adapter.setOnClickListener((v, item) -> BookmarkListActivity.startForResult(this, startBookmarkListForResult, item));
|
||||||
BookmarkListActivity.startForResult(this, startBookmarkListForResult, item);
|
|
||||||
});
|
|
||||||
|
|
||||||
return adapter;
|
return adapter;
|
||||||
}
|
}
|
||||||
@@ -855,15 +853,18 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
|
|||||||
@Nullable
|
@Nullable
|
||||||
public ArrayList<MenuBottomSheetItem> getMenuBottomSheetItems(String id)
|
public ArrayList<MenuBottomSheetItem> getMenuBottomSheetItems(String id)
|
||||||
{
|
{
|
||||||
if (id.equals(BOOKMARKS_MENU_ID))
|
switch (id) {
|
||||||
return getBookmarkMenuItems();
|
case BOOKMARKS_MENU_ID -> {
|
||||||
if (id.equals(TRACK_MENU_ID))
|
return getBookmarkMenuItems();
|
||||||
{
|
}
|
||||||
final Track track = (Track) getBookmarkListAdapter().getItem(mSelectedPosition);
|
case TRACK_MENU_ID -> {
|
||||||
return getTrackMenuItems(track);
|
final Track track = (Track) getBookmarkListAdapter().getItem(mSelectedPosition);
|
||||||
}
|
return getTrackMenuItems(track);
|
||||||
if (id.equals(OPTIONS_MENU_ID))
|
}
|
||||||
return getOptionsMenuItems();
|
case OPTIONS_MENU_ID -> {
|
||||||
return null;
|
return getOptionsMenuItems();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package app.organicmaps.car;
|
|||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -16,8 +15,6 @@ import androidx.car.app.validation.HostValidator;
|
|||||||
import androidx.core.app.NotificationChannelCompat;
|
import androidx.core.app.NotificationChannelCompat;
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
|
||||||
|
|
||||||
import app.organicmaps.BuildConfig;
|
import app.organicmaps.BuildConfig;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
|
|||||||
@@ -33,35 +33,17 @@ public final class RoutingHelpers
|
|||||||
public static LaneDirection createLaneDirection(@NonNull LaneWay laneWay, boolean isRecommended)
|
public static LaneDirection createLaneDirection(@NonNull LaneWay laneWay, boolean isRecommended)
|
||||||
{
|
{
|
||||||
int shape = LaneDirection.SHAPE_UNKNOWN;
|
int shape = LaneDirection.SHAPE_UNKNOWN;
|
||||||
switch (laneWay)
|
shape = switch (laneWay) {
|
||||||
{
|
case REVERSE -> LaneDirection.SHAPE_U_TURN_LEFT;
|
||||||
case REVERSE:
|
case SHARP_LEFT -> LaneDirection.SHAPE_SHARP_LEFT;
|
||||||
shape = LaneDirection.SHAPE_U_TURN_LEFT;
|
case LEFT -> LaneDirection.SHAPE_NORMAL_LEFT;
|
||||||
break;
|
case SLIGHT_LEFT, MERGE_TO_LEFT -> LaneDirection.SHAPE_SLIGHT_LEFT;
|
||||||
case SHARP_LEFT:
|
case SLIGHT_RIGHT, MERGE_TO_RIGHT -> LaneDirection.SHAPE_SLIGHT_RIGHT;
|
||||||
shape = LaneDirection.SHAPE_SHARP_LEFT;
|
case THROUGH -> LaneDirection.SHAPE_STRAIGHT;
|
||||||
break;
|
case RIGHT -> LaneDirection.SHAPE_NORMAL_RIGHT;
|
||||||
case LEFT:
|
case SHARP_RIGHT -> LaneDirection.SHAPE_SHARP_RIGHT;
|
||||||
shape = LaneDirection.SHAPE_NORMAL_LEFT;
|
default -> shape;
|
||||||
break;
|
};
|
||||||
case SLIGHT_LEFT:
|
|
||||||
case MERGE_TO_LEFT:
|
|
||||||
shape = LaneDirection.SHAPE_SLIGHT_LEFT;
|
|
||||||
break;
|
|
||||||
case SLIGHT_RIGHT:
|
|
||||||
case MERGE_TO_RIGHT:
|
|
||||||
shape = LaneDirection.SHAPE_SLIGHT_RIGHT;
|
|
||||||
break;
|
|
||||||
case THROUGH:
|
|
||||||
shape = LaneDirection.SHAPE_STRAIGHT;
|
|
||||||
break;
|
|
||||||
case RIGHT:
|
|
||||||
shape = LaneDirection.SHAPE_NORMAL_RIGHT;
|
|
||||||
break;
|
|
||||||
case SHARP_RIGHT:
|
|
||||||
shape = LaneDirection.SHAPE_SHARP_RIGHT;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return LaneDirection.create(shape, isRecommended);
|
return LaneDirection.create(shape, isRecommended);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,12 +12,11 @@ import android.widget.ScrollView;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import app.organicmaps.sdk.Framework;
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmToolbarFragment;
|
import app.organicmaps.base.BaseMwmToolbarFragment;
|
||||||
import app.organicmaps.sdk.editor.OsmOAuth;
|
import app.organicmaps.sdk.editor.OsmOAuth;
|
||||||
import app.organicmaps.sdk.util.Constants;
|
import app.organicmaps.sdk.util.Constants;
|
||||||
import app.organicmaps.sdk.util.DateUtils;
|
|
||||||
import app.organicmaps.util.InputUtils;
|
import app.organicmaps.util.InputUtils;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
@@ -56,7 +55,6 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment
|
|||||||
MaterialButton registerButton = view.findViewById(R.id.register);
|
MaterialButton registerButton = view.findViewById(R.id.register);
|
||||||
registerButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_REGISTER));
|
registerButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_REGISTER));
|
||||||
mProgress = view.findViewById(R.id.osm_login_progress);
|
mProgress = view.findViewById(R.id.osm_login_progress);
|
||||||
final String dataVersion = DateUtils.getShortDateFormatter().format(Framework.getDataVersion());
|
|
||||||
|
|
||||||
// TODO(@pastk): remove unused flow with users entering credentials into app's form
|
// TODO(@pastk): remove unused flow with users entering credentials into app's form
|
||||||
// Hide login and password inputs and Forgot password button
|
// Hide login and password inputs and Forgot password button
|
||||||
@@ -165,10 +163,7 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment
|
|||||||
// Finish OAuth2 auth flow and get username for UI.
|
// Finish OAuth2 auth flow and get username for UI.
|
||||||
final String oauthToken = OsmOAuth.nativeAuthWithOAuth2Code(oauth2code);
|
final String oauthToken = OsmOAuth.nativeAuthWithOAuth2Code(oauth2code);
|
||||||
final String username = (oauthToken == null) ? null : OsmOAuth.nativeGetOsmUsername(oauthToken);
|
final String username = (oauthToken == null) ? null : OsmOAuth.nativeGetOsmUsername(oauthToken);
|
||||||
UiThread.run(() ->
|
UiThread.run(() -> processAuth(oauthToken, username));
|
||||||
{
|
|
||||||
processAuth(oauthToken, username);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import androidx.preference.PreferenceManager;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|||||||
@@ -399,15 +399,12 @@ public class MapButtonsController extends Fragment
|
|||||||
final View button = entry.getValue();
|
final View button = entry.getValue();
|
||||||
if (button.getParent() == parent)
|
if (button.getParent() == parent)
|
||||||
{
|
{
|
||||||
int toleranceOffset = 0;
|
int toleranceOffset = switch (entry.getKey()) {
|
||||||
// Allow offset tolerance for zoom buttons
|
case zoomIn, zoomOut, zoom -> -140;
|
||||||
switch(entry.getKey())
|
default -> 0;
|
||||||
{
|
// Allow offset tolerance for zoom buttons
|
||||||
case zoomIn: case zoomOut: case zoom:
|
};
|
||||||
toleranceOffset = -140;
|
showButton(getViewTopOffset(translation, button) >= toleranceOffset, entry.getKey());
|
||||||
break;
|
|
||||||
}
|
|
||||||
showButton(getViewTopOffset(translation, button) >= toleranceOffset, entry.getKey());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import androidx.activity.result.ActivityResultLauncher;
|
|||||||
import androidx.annotation.DrawableRes;
|
import androidx.annotation.DrawableRes;
|
||||||
import androidx.annotation.IdRes;
|
import androidx.annotation.IdRes;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
@@ -226,37 +225,34 @@ public class RoutingPlanController extends ToolbarController
|
|||||||
{
|
{
|
||||||
UiUtils.invisible(mProgressVehicle, mProgressPedestrian, mProgressTransit,
|
UiUtils.invisible(mProgressVehicle, mProgressPedestrian, mProgressTransit,
|
||||||
mProgressBicycle, mProgressRuler);
|
mProgressBicycle, mProgressRuler);
|
||||||
WheelProgressView progressView;
|
WheelProgressView progressView = switch (router) {
|
||||||
switch (router)
|
case Vehicle -> {
|
||||||
{
|
mRouterTypes.check(R.id.vehicle);
|
||||||
case Vehicle:
|
yield mProgressVehicle;
|
||||||
mRouterTypes.check(R.id.vehicle);
|
}
|
||||||
progressView = mProgressVehicle;
|
case Pedestrian -> {
|
||||||
break;
|
mRouterTypes.check(R.id.pedestrian);
|
||||||
case Pedestrian:
|
yield mProgressPedestrian;
|
||||||
mRouterTypes.check(R.id.pedestrian);
|
}
|
||||||
progressView = mProgressPedestrian;
|
//case Taxi:
|
||||||
break;
|
// {
|
||||||
//case Taxi:
|
// mRouterTypes.check(R.id.taxi);
|
||||||
// {
|
// progressView = mProgressTaxi;
|
||||||
// mRouterTypes.check(R.id.taxi);
|
// }
|
||||||
// progressView = mProgressTaxi;
|
case Transit -> {
|
||||||
// }
|
mRouterTypes.check(R.id.transit);
|
||||||
case Transit:
|
yield mProgressTransit;
|
||||||
mRouterTypes.check(R.id.transit);
|
}
|
||||||
progressView = mProgressTransit;
|
case Bicycle -> {
|
||||||
break;
|
mRouterTypes.check(R.id.bicycle);
|
||||||
case Bicycle:
|
yield mProgressBicycle;
|
||||||
mRouterTypes.check(R.id.bicycle);
|
}
|
||||||
progressView = mProgressBicycle;
|
case Ruler -> {
|
||||||
break;
|
mRouterTypes.check(R.id.ruler);
|
||||||
case Ruler:
|
yield mProgressRuler;
|
||||||
mRouterTypes.check(R.id.ruler);
|
}
|
||||||
progressView = mProgressRuler;
|
default -> throw new IllegalArgumentException("unknown router: " + router);
|
||||||
break;
|
};
|
||||||
default:
|
|
||||||
throw new IllegalArgumentException("unknown router: " + router);
|
|
||||||
}
|
|
||||||
|
|
||||||
RoutingToolbarButton button = mRouterTypes
|
RoutingToolbarButton button = mRouterTypes
|
||||||
.findViewById(mRouterTypes.getCheckedRadioButtonId());
|
.findViewById(mRouterTypes.getCheckedRadioButtonId());
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import androidx.annotation.NonNull;
|
|||||||
|
|
||||||
import app.organicmaps.downloader.Android7RootCertificateWorkaround;
|
import app.organicmaps.downloader.Android7RootCertificateWorkaround;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
import app.organicmaps.sdk.util.Utils;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import android.app.Activity;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package app.organicmaps.settings;
|
|||||||
|
|
||||||
import static app.organicmaps.backup.BackupUtils.formatReadableFolderPath;
|
import static app.organicmaps.backup.BackupUtils.formatReadableFolderPath;
|
||||||
import static app.organicmaps.backup.BackupUtils.getMaxBackups;
|
import static app.organicmaps.backup.BackupUtils.getMaxBackups;
|
||||||
import static app.organicmaps.backup.BackupUtils.isBackupFolderAvailable;
|
|
||||||
import static app.organicmaps.sdk.util.StorageUtils.isFolderWritable;
|
import static app.organicmaps.sdk.util.StorageUtils.isFolderWritable;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -355,13 +354,11 @@ public class BackupSettingsFragment
|
|||||||
|
|
||||||
private void showBackupErrorAlertDialog(String message)
|
private void showBackupErrorAlertDialog(String message)
|
||||||
{
|
{
|
||||||
requireActivity().runOnUiThread(() -> {
|
requireActivity().runOnUiThread(() -> new MaterialAlertDialogBuilder(requireActivity())
|
||||||
new MaterialAlertDialogBuilder(requireActivity())
|
.setTitle(R.string.pref_backup_now_summary_failed)
|
||||||
.setTitle(R.string.pref_backup_now_summary_failed)
|
.setMessage(message)
|
||||||
.setMessage(message)
|
.setPositiveButton(android.R.string.ok, (dialog, which) -> dialog.dismiss())
|
||||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> dialog.dismiss())
|
.show());
|
||||||
.show();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void takePersistableUriPermission(Uri uri)
|
private void takePersistableUriPermission(Uri uri)
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import app.organicmaps.sdk.editor.OsmOAuth;
|
|||||||
import app.organicmaps.editor.LanguagesFragment;
|
import app.organicmaps.editor.LanguagesFragment;
|
||||||
import app.organicmaps.editor.ProfileActivity;
|
import app.organicmaps.editor.ProfileActivity;
|
||||||
import app.organicmaps.sdk.editor.data.Language;
|
import app.organicmaps.sdk.editor.data.Language;
|
||||||
import app.organicmaps.help.HelpActivity;
|
|
||||||
import app.organicmaps.sdk.location.LocationHelper;
|
import app.organicmaps.sdk.location.LocationHelper;
|
||||||
import app.organicmaps.sdk.location.LocationProviderFactory;
|
import app.organicmaps.sdk.location.LocationProviderFactory;
|
||||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
import app.organicmaps.sdk.routing.RoutingOptions;
|
||||||
@@ -44,8 +43,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import com.google.android.material.textview.MaterialTextView;
|
|||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.location.TrackRecorder;
|
import app.organicmaps.sdk.location.TrackRecorder;
|
||||||
import app.organicmaps.sdk.util.Config;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user