mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-28 11:58:23 +01:00
Minor code improvements (#1218)
* Move mAccessToken and mAccountName initialization upper * Marked INSTANCE as a volatile to be DCL compliant * fix a typo in a method name and remove redundant switch * remove redundant ifs * removed DCL on RedditDataRoomDatabase as its controlled by dagger * remove redundant ifs in PostGalleryActivity as nColumns can be either 2 or 3 only * replace MediaStore.Video.Media.IS_PENDING with MediaStore.MediaColumns.IS_PENDING * reverting simplified ifs as it going to be used in the future * reverting HistoryPostViewModel
This commit is contained in:
parent
da58688586
commit
1abda7c6e3
@ -2,5 +2,5 @@ package ml.docilealligator.infinityforreddit;
|
|||||||
|
|
||||||
public interface ActivityToolbarInterface {
|
public interface ActivityToolbarInterface {
|
||||||
void onLongPress();
|
void onLongPress();
|
||||||
default void displaySortType() {};
|
default void displaySortType() {}
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ class AppModule {
|
|||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
RedditDataRoomDatabase provideRedditDataRoomDatabase() {
|
RedditDataRoomDatabase provideRedditDataRoomDatabase() {
|
||||||
return RedditDataRoomDatabase.getDatabase(mApplication);
|
return RedditDataRoomDatabase.create(mApplication);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
@ -230,10 +230,8 @@ public class PullNotificationWorker extends Worker {
|
|||||||
return fetchMessages(account, retryCount - 1);
|
return fetchMessages(account, retryCount - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,13 +40,9 @@ import ml.docilealligator.infinityforreddit.user.UserData;
|
|||||||
SubscribedUserData.class, MultiReddit.class, CustomTheme.class, RecentSearchQuery.class,
|
SubscribedUserData.class, MultiReddit.class, CustomTheme.class, RecentSearchQuery.class,
|
||||||
ReadPost.class, PostFilter.class, PostFilterUsage.class, AnonymousMultiredditSubreddit.class}, version = 23)
|
ReadPost.class, PostFilter.class, PostFilterUsage.class, AnonymousMultiredditSubreddit.class}, version = 23)
|
||||||
public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
||||||
private static RedditDataRoomDatabase INSTANCE;
|
|
||||||
|
|
||||||
public static RedditDataRoomDatabase getDatabase(final Context context) {
|
public static RedditDataRoomDatabase create(final Context context) {
|
||||||
if (INSTANCE == null) {
|
return Room.databaseBuilder(context.getApplicationContext(),
|
||||||
synchronized (RedditDataRoomDatabase.class) {
|
|
||||||
if (INSTANCE == null) {
|
|
||||||
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
|
|
||||||
RedditDataRoomDatabase.class, "reddit_data")
|
RedditDataRoomDatabase.class, "reddit_data")
|
||||||
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5,
|
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5,
|
||||||
MIGRATION_5_6, MIGRATION_6_7, MIGRATION_7_8, MIGRATION_8_9,
|
MIGRATION_5_6, MIGRATION_6_7, MIGRATION_7_8, MIGRATION_8_9,
|
||||||
@ -56,10 +52,6 @@ public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
|||||||
MIGRATION_21_22, MIGRATION_22_23)
|
MIGRATION_21_22, MIGRATION_22_23)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
return INSTANCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract AccountDao accountDao();
|
public abstract AccountDao accountDao();
|
||||||
|
|
||||||
|
@ -106,7 +106,6 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
private void handleUri(Uri uri) {
|
private void handleUri(Uri uri) {
|
||||||
if (uri == null) {
|
if (uri == null) {
|
||||||
Toast.makeText(this, R.string.no_link_available, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_link_available, Toast.LENGTH_SHORT).show();
|
||||||
finish();
|
|
||||||
} else {
|
} else {
|
||||||
String path = uri.getPath();
|
String path = uri.getPath();
|
||||||
if (path == null) {
|
if (path == null) {
|
||||||
@ -339,8 +338,8 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deepLinkError(Uri uri) {
|
private void deepLinkError(Uri uri) {
|
||||||
|
@ -322,12 +322,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
mMessageFullname = savedInstanceState.getString(MESSAGE_FULLNAME_STATE);
|
mMessageFullname = savedInstanceState.getString(MESSAGE_FULLNAME_STATE);
|
||||||
mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE);
|
mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE);
|
||||||
inboxCount = savedInstanceState.getInt(INBOX_COUNT_STATE);
|
inboxCount = savedInstanceState.getInt(INBOX_COUNT_STATE);
|
||||||
initializeNotificationAndBindView();
|
|
||||||
} else {
|
} else {
|
||||||
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSSAGE_FULLNAME);
|
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSSAGE_FULLNAME);
|
||||||
mNewAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
|
mNewAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
|
||||||
initializeNotificationAndBindView();
|
|
||||||
}
|
}
|
||||||
|
initializeNotificationAndBindView();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -754,11 +753,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
intent = new Intent(MainActivity.this, ViewUserDetailActivity.class);
|
intent = new Intent(MainActivity.this, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName);
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName);
|
||||||
} else if (stringId == R.string.subscriptions) {
|
} else if (stringId == R.string.subscriptions) {
|
||||||
if (mAccessToken != null) {
|
|
||||||
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
||||||
} else {
|
|
||||||
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
|
||||||
}
|
|
||||||
} else if (stringId == R.string.multi_reddit) {
|
} else if (stringId == R.string.multi_reddit) {
|
||||||
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
||||||
intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
|
intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
|
||||||
@ -1101,7 +1096,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {;
|
public void onBackPressed() {
|
||||||
if (drawer.isOpen()) {
|
if (drawer.isOpen()) {
|
||||||
drawer.close();
|
drawer.close();
|
||||||
} else {
|
} else {
|
||||||
|
@ -236,28 +236,9 @@ public class PostGalleryActivity extends BaseActivity implements FlairBottomShee
|
|||||||
imagesRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
|
imagesRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
|
||||||
@Override
|
@Override
|
||||||
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
|
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
|
||||||
GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams();
|
|
||||||
|
|
||||||
int spanIndex = layoutParams.getSpanIndex();
|
|
||||||
|
|
||||||
int offset = (int) (Utils.convertDpToPixel(16, PostGalleryActivity.this));
|
int offset = (int) (Utils.convertDpToPixel(16, PostGalleryActivity.this));
|
||||||
int halfOffset = offset / 2;
|
int halfOffset = offset / 2;
|
||||||
|
|
||||||
if (nColumns == 2) {
|
|
||||||
if (spanIndex == 0) {
|
|
||||||
outRect.set(halfOffset, 0, halfOffset, offset);
|
outRect.set(halfOffset, 0, halfOffset, offset);
|
||||||
} else {
|
|
||||||
outRect.set(halfOffset, 0, halfOffset, offset);
|
|
||||||
}
|
|
||||||
} else if (nColumns == 3) {
|
|
||||||
if (spanIndex == 0) {
|
|
||||||
outRect.set(halfOffset, 0, halfOffset, offset);
|
|
||||||
} else if (spanIndex == 1) {
|
|
||||||
outRect.set(halfOffset, 0, halfOffset, offset);
|
|
||||||
} else {
|
|
||||||
outRect.set(halfOffset, 0, halfOffset, offset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -58,11 +58,7 @@ public class SubredditMultiselectionRecyclerViewAdapter extends RecyclerView.Ada
|
|||||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
|
||||||
.into(((SubscribedSubredditViewHolder) holder).iconImageView);
|
.into(((SubscribedSubredditViewHolder) holder).iconImageView);
|
||||||
if (subscribedSubreddits.get(position).isSelected()) {
|
((SubscribedSubredditViewHolder) holder).checkBox.setChecked(subscribedSubreddits.get(position).isSelected());
|
||||||
((SubscribedSubredditViewHolder) holder).checkBox.setChecked(true);
|
|
||||||
} else {
|
|
||||||
((SubscribedSubredditViewHolder) holder).checkBox.setChecked(false);
|
|
||||||
}
|
|
||||||
((SubscribedSubredditViewHolder) holder).checkBox.setOnClickListener(view -> {
|
((SubscribedSubredditViewHolder) holder).checkBox.setOnClickListener(view -> {
|
||||||
if (subscribedSubreddits.get(position).isSelected()) {
|
if (subscribedSubreddits.get(position).isSelected()) {
|
||||||
((SubscribedSubredditViewHolder) holder).checkBox.setChecked(false);
|
((SubscribedSubredditViewHolder) holder).checkBox.setChecked(false);
|
||||||
|
@ -277,7 +277,7 @@ public interface RedditAPI {
|
|||||||
|
|
||||||
default Call<String> getWiki(@Path("subredditName") String subredditName) {
|
default Call<String> getWiki(@Path("subredditName") String subredditName) {
|
||||||
return getWikiPage(subredditName, "index");
|
return getWikiPage(subredditName, "index");
|
||||||
};
|
}
|
||||||
|
|
||||||
@GET("/r/{subredditName}/wiki/{wikiPage}.json?raw_json=1")
|
@GET("/r/{subredditName}/wiki/{wikiPage}.json?raw_json=1")
|
||||||
Call<String> getWikiPage(@Path("subredditName") String subredditName, @Path("wikiPage") String wikiPage);
|
Call<String> getWikiPage(@Path("subredditName") String subredditName, @Path("wikiPage") String wikiPage);
|
||||||
|
@ -876,7 +876,6 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
for (int i = currentSearchIndex - 1; i >= 0; i--) {
|
for (int i = currentSearchIndex - 1; i >= 0; i--) {
|
||||||
if (visibleComments.get(i).getCommentRawText() != null &&
|
if (visibleComments.get(i).getCommentRawText() != null &&
|
||||||
@ -894,8 +893,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ public class DownloadMediaService extends Service {
|
|||||||
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, destinationFileName);
|
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, destinationFileName);
|
||||||
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mediaType == EXTRA_MEDIA_TYPE_VIDEO ? "video/*" : "image/*");
|
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mediaType == EXTRA_MEDIA_TYPE_VIDEO ? "video/*" : "image/*");
|
||||||
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, destinationFileUriString);
|
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, destinationFileUriString);
|
||||||
contentValues.put(mediaType == EXTRA_MEDIA_TYPE_VIDEO ? MediaStore.Video.Media.IS_PENDING : MediaStore.Images.Media.IS_PENDING, 1);
|
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1);
|
||||||
|
|
||||||
final Uri contentUri = mediaType == EXTRA_MEDIA_TYPE_VIDEO ? MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) : MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
|
final Uri contentUri = mediaType == EXTRA_MEDIA_TYPE_VIDEO ? MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) : MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
|
||||||
Uri uri = contentResolver.insert(contentUri, contentValues);
|
Uri uri = contentResolver.insert(contentUri, contentValues);
|
||||||
@ -291,7 +291,7 @@ public class DownloadMediaService extends Service {
|
|||||||
stream.write(buf, 0, len);
|
stream.write(buf, 0, len);
|
||||||
}
|
}
|
||||||
contentValues.clear();
|
contentValues.clear();
|
||||||
contentValues.put(mediaType == EXTRA_MEDIA_TYPE_VIDEO ? MediaStore.Video.Media.IS_PENDING : MediaStore.Images.Media.IS_PENDING, 0);
|
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 0);
|
||||||
contentResolver.update(uri, contentValues, null, null);
|
contentResolver.update(uri, contentValues, null, null);
|
||||||
destinationFileUriString = uri.toString();
|
destinationFileUriString = uri.toString();
|
||||||
}
|
}
|
||||||
|
@ -44,11 +44,7 @@ public class GesturesAndButtonsPreferenceFragment extends CustomFontPreferenceFr
|
|||||||
if (lockJumpToNextTopLevelCommentButtonSwitch != null && lockBottomAppBarSwitch != null &&
|
if (lockJumpToNextTopLevelCommentButtonSwitch != null && lockBottomAppBarSwitch != null &&
|
||||||
swipeUpToHideJumpToNextTopLevelCommentButtonSwitch != null) {
|
swipeUpToHideJumpToNextTopLevelCommentButtonSwitch != null) {
|
||||||
lockJumpToNextTopLevelCommentButtonSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
lockJumpToNextTopLevelCommentButtonSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
if ((Boolean) newValue) {
|
swipeUpToHideJumpToNextTopLevelCommentButtonSwitch.setVisible(!((Boolean) newValue));
|
||||||
swipeUpToHideJumpToNextTopLevelCommentButtonSwitch.setVisible(false);
|
|
||||||
} else {
|
|
||||||
swipeUpToHideJumpToNextTopLevelCommentButtonSwitch.setVisible(true);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -24,20 +24,12 @@ public class ImmersiveInterfacePreferenceFragment extends CustomFontPreferenceFr
|
|||||||
if (immersiveInterfaceSwitch != null && immersiveInterfaceIgnoreNavBarSwitch != null
|
if (immersiveInterfaceSwitch != null && immersiveInterfaceIgnoreNavBarSwitch != null
|
||||||
&& disableImmersiveInterfaceInLandscapeModeSwitch != null) {
|
&& disableImmersiveInterfaceInLandscapeModeSwitch != null) {
|
||||||
immersiveInterfaceSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
immersiveInterfaceSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
if ((Boolean) newValue) {
|
immersiveInterfaceIgnoreNavBarSwitch.setVisible((Boolean) newValue);
|
||||||
immersiveInterfaceIgnoreNavBarSwitch.setVisible(true);
|
|
||||||
} else {
|
|
||||||
immersiveInterfaceIgnoreNavBarSwitch.setVisible(false);
|
|
||||||
}
|
|
||||||
EventBus.getDefault().post(new RecreateActivityEvent());
|
EventBus.getDefault().post(new RecreateActivityEvent());
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (immersiveInterfaceSwitch.isChecked()) {
|
immersiveInterfaceIgnoreNavBarSwitch.setVisible(immersiveInterfaceSwitch.isChecked());
|
||||||
immersiveInterfaceIgnoreNavBarSwitch.setVisible(true);
|
|
||||||
} else {
|
|
||||||
immersiveInterfaceIgnoreNavBarSwitch.setVisible(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
immersiveInterfaceIgnoreNavBarSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
immersiveInterfaceIgnoreNavBarSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
EventBus.getDefault().post(new RecreateActivityEvent());
|
EventBus.getDefault().post(new RecreateActivityEvent());
|
||||||
|
@ -132,7 +132,7 @@ public class JSONUtils {
|
|||||||
public static final String TOTAL_KARMA_KEY = "total_karma";
|
public static final String TOTAL_KARMA_KEY = "total_karma";
|
||||||
public static final String AWARDER_KARMA_KEY = "awarder_karma";
|
public static final String AWARDER_KARMA_KEY = "awarder_karma";
|
||||||
public static final String AWARDEE_KARMA_KEY = "awardee_karma";
|
public static final String AWARDEE_KARMA_KEY = "awardee_karma";
|
||||||
public static final String CONTENT_URLS_KEY = "content_urls";;
|
public static final String CONTENT_URLS_KEY = "content_urls";
|
||||||
public static final String WEBM_KEY = "webm";
|
public static final String WEBM_KEY = "webm";
|
||||||
public static final String WEBM_URL_KEY = "webmUrl";
|
public static final String WEBM_URL_KEY = "webmUrl";
|
||||||
public static final String UPVOTE_RATIO_KEY = "upvote_ratio";
|
public static final String UPVOTE_RATIO_KEY = "upvote_ratio";
|
||||||
|
@ -129,7 +129,7 @@ public class MaterialYouUtils {
|
|||||||
darkTheme.navBarColor = darkTheme.colorPrimary;
|
darkTheme.navBarColor = darkTheme.colorPrimary;
|
||||||
darkTheme.primaryTextColor = context.getColor(android.R.color.system_neutral1_10);
|
darkTheme.primaryTextColor = context.getColor(android.R.color.system_neutral1_10);
|
||||||
darkTheme.secondaryTextColor = context.getColor(android.R.color.system_neutral1_10);
|
darkTheme.secondaryTextColor = context.getColor(android.R.color.system_neutral1_10);
|
||||||
darkTheme.bottomAppBarIconColor = context.getColor(android.R.color.system_accent1_100);;
|
darkTheme.bottomAppBarIconColor = context.getColor(android.R.color.system_accent1_100);
|
||||||
darkTheme.primaryIconColor = context.getColor(android.R.color.system_accent1_100);
|
darkTheme.primaryIconColor = context.getColor(android.R.color.system_accent1_100);
|
||||||
darkTheme.fabIconColor = context.getColor(android.R.color.system_neutral1_900);
|
darkTheme.fabIconColor = context.getColor(android.R.color.system_neutral1_900);
|
||||||
darkTheme.toolbarPrimaryTextAndIconColor = context.getColor(android.R.color.system_accent2_100);
|
darkTheme.toolbarPrimaryTextAndIconColor = context.getColor(android.R.color.system_accent2_100);
|
||||||
|
@ -252,7 +252,6 @@ public final class Utils {
|
|||||||
}
|
}
|
||||||
} catch (SecurityException ignore) {
|
} catch (SecurityException ignore) {
|
||||||
}
|
}
|
||||||
return NETWORK_TYPE_OTHER;
|
|
||||||
} else {
|
} else {
|
||||||
boolean isWifi = false;
|
boolean isWifi = false;
|
||||||
boolean isCellular = false;
|
boolean isCellular = false;
|
||||||
@ -274,8 +273,8 @@ public final class Utils {
|
|||||||
return NETWORK_TYPE_CELLULAR;
|
return NETWORK_TYPE_CELLULAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NETWORK_TYPE_OTHER;
|
|
||||||
}
|
}
|
||||||
|
return NETWORK_TYPE_OTHER;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NETWORK_TYPE_OTHER;
|
return NETWORK_TYPE_OTHER;
|
||||||
|
Loading…
Reference in New Issue
Block a user