diff --git a/app/build.gradle b/app/build.gradle index 4c091e12e..0e671f918 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,14 +34,14 @@ android { } lintOptions { + abortOnError true + absolutePaths false + explainIssues false htmlReport false - xmlReport false - textReport true lintConfig file("${rootProject.getRootDir()}/lint.xml") + textReport true warningsAsErrors true - abortOnError true - explainIssues false - absolutePaths false + xmlReport false } compileOptions { @@ -55,41 +55,39 @@ android { } ext { - supportVersion = '28.0.0' okHttpVersion = '3.9.1' daggerVersion = '1.2.5' leakCanaryVersion = '1.5.4' retrofitVersion = '2.3.0' - roomVersion = '1.0.0' - archVersion = '1.1.0' + roomVersion = '2.2.2' } dependencies { - implementation 'androidx.appcompat:appcompat:1.0.0', - 'androidx.recyclerview:recyclerview:1.0.0', - 'androidx.cardview:cardview:1.0.0', - 'com.google.android.material:material:1.0.0', - 'androidx.preference:preference:1.0.0', - 'androidx.browser:browser:1.0.0', + implementation "androidx.appcompat:appcompat:1.0.0", + "androidx.browser:browser:1.0.0", + "androidx.cardview:cardview:1.0.0", + "androidx.lifecycle:lifecycle-common-java8:2.0.0", + "androidx.lifecycle:lifecycle-extensions:2.0.0", + "androidx.preference:preference:1.0.0", + "androidx.recyclerview:recyclerview:1.0.0", + "androidx.room:room-runtime:$roomVersion", + "com.google.android.material:material:1.0.0", "com.squareup.dagger:dagger:$daggerVersion", - "com.squareup.retrofit2:retrofit:$retrofitVersion", - "com.squareup.retrofit2:converter-gson:$retrofitVersion", - "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion", - "com.squareup.okhttp3:okhttp:$okHttpVersion", "com.squareup.okhttp3:logging-interceptor:$okHttpVersion", + "com.squareup.okhttp3:okhttp:$okHttpVersion", + "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion", + "com.squareup.retrofit2:converter-gson:$retrofitVersion", + "com.squareup.retrofit2:retrofit:$retrofitVersion", "io.reactivex:rxandroid:1.2.1", "io.reactivex:rxjava:1.1.7", - 'androidx.room:room-runtime:2.0.0', - 'androidx.lifecycle:lifecycle-extensions:2.0.0', - 'androidx.lifecycle:lifecycle-common-java8:2.0.0', "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" debugImplementation "com.squareup.leakcanary:leakcanary-android${rootProject.hasProperty("leak") ? "" : "-no-op"}:$leakCanaryVersion" releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion" testImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion" - kapt 'androidx.room:room-compiler:2.0.0', + kapt "androidx.room:room-compiler:$roomVersion", "com.squareup.dagger:dagger-compiler:$daggerVersion" - kaptTest 'androidx.room:room-compiler:2.0.0', + kaptTest "androidx.room:room-compiler:$roomVersion", "com.squareup.dagger:dagger-compiler:$daggerVersion" } diff --git a/app/src/main/java/io/github/hidroh/materialistic/AboutActivity.kt b/app/src/main/java/io/github/hidroh/materialistic/AboutActivity.kt index 670e27f57..e2d02d112 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/AboutActivity.kt +++ b/app/src/main/java/io/github/hidroh/materialistic/AboutActivity.kt @@ -17,46 +17,53 @@ package io.github.hidroh.materialistic import android.content.pm.PackageManager +import android.os.Build import android.os.Bundle +import android.view.MenuItem import androidx.annotation.IdRes import androidx.appcompat.app.ActionBar -import android.view.MenuItem +import androidx.core.content.pm.PackageInfoCompat class AboutActivity : InjectableActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_about) - setSupportActionBar(findViewById(R.id.toolbar)) - - supportActionBar!!.displayOptions = ActionBar.DISPLAY_SHOW_HOME or - ActionBar.DISPLAY_HOME_AS_UP or ActionBar.DISPLAY_SHOW_TITLE - - var versionName = "" - var versionCode = 0 - try { - versionName = packageManager.getPackageInfo(packageName, 0).versionName - versionCode = packageManager.getPackageInfo(packageName, 0).versionCode - } catch (e: PackageManager.NameNotFoundException) { - // do nothing + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_about) + setSupportActionBar(findViewById(R.id.toolbar)) + + supportActionBar!!.displayOptions = ActionBar.DISPLAY_SHOW_HOME or + ActionBar.DISPLAY_HOME_AS_UP or ActionBar.DISPLAY_SHOW_TITLE + + var versionName = "" + var versionCode = 0 + try { + val packageInfo = packageManager.getPackageInfo(packageName, 0) + versionName = packageInfo.versionName + versionCode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + packageInfo.longVersionCode.toInt() + } else { + PackageInfoCompat.getLongVersionCode(packageInfo).toInt() + } + } catch (e: PackageManager.NameNotFoundException) { + // do nothing + } + + setTextWithLinks(R.id.text_application_info, getString(R.string.application_info_text, versionName, versionCode)) + setTextWithLinks(R.id.text_developer_info, getString(R.string.developer_info_text)) + setTextWithLinks(R.id.text_libraries, getString(R.string.libraries_text)) + setTextWithLinks(R.id.text_license, getString(R.string.license_text)) + setTextWithLinks(R.id.text_3rd_party_licenses, getString(R.string.third_party_licenses_text)) + setTextWithLinks(R.id.text_privacy_policy, getString(R.string.privacy_policy_text)) + } + + private fun setTextWithLinks(@IdRes textViewResId: Int, htmlText: String) { + AppUtils.setTextWithLinks(findViewById(textViewResId), AppUtils.fromHtml(htmlText)) } - setTextWithLinks(R.id.text_application_info, getString(R.string.application_info_text, versionName, versionCode)) - setTextWithLinks(R.id.text_developer_info, getString(R.string.developer_info_text)) - setTextWithLinks(R.id.text_libraries, getString(R.string.libraries_text)) - setTextWithLinks(R.id.text_license, getString(R.string.license_text)) - setTextWithLinks(R.id.text_3rd_party_licenses, getString(R.string.third_party_licenses_text)) - setTextWithLinks(R.id.text_privacy_policy, getString(R.string.privacy_policy_text)) - } - - private fun setTextWithLinks(@IdRes textViewResId: Int, htmlText: String) { - AppUtils.setTextWithLinks(findViewById(textViewResId), AppUtils.fromHtml(htmlText)) - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (item.itemId == android.R.id.home) { - finish() - return true + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (item.itemId == android.R.id.home) { + finish() + return true + } + return super.onOptionsItemSelected(item) } - return super.onOptionsItemSelected(item) - } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/AppUtils.java b/app/src/main/java/io/github/hidroh/materialistic/AppUtils.java index 9ea225e8b..5bc302945 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/AppUtils.java +++ b/app/src/main/java/io/github/hidroh/materialistic/AppUtils.java @@ -54,12 +54,6 @@ import android.widget.TextView; import android.widget.Toast; -import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.floatingactionbutton.FloatingActionButton; - -import java.util.ArrayList; -import java.util.List; - import androidx.annotation.AttrRes; import androidx.annotation.DimenRes; import androidx.annotation.NonNull; @@ -71,6 +65,13 @@ import androidx.core.util.Pair; import androidx.core.view.GravityCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.floatingactionbutton.FloatingActionButton; + +import java.util.ArrayList; +import java.util.List; + import io.github.hidroh.materialistic.annotation.PublicApi; import io.github.hidroh.materialistic.data.HackerNewsClient; import io.github.hidroh.materialistic.data.Item; @@ -94,8 +95,12 @@ public class AppUtils { private static final String HOST_ITEM = "item"; private static final String HOST_USER = "user"; - public static void openWebUrlExternal(Context context, @Nullable WebItem item, - String url, @Nullable CustomTabsSession session) { + public static void openWebUrlExternal( + Context context, + @Nullable WebItem item, + String url, + @Nullable CustomTabsSession session + ) { if (!hasConnection(context)) { context.startActivity(new Intent(context, OfflineWebActivity.class) .putExtra(OfflineWebActivity.EXTRA_URL, url)); @@ -110,24 +115,29 @@ public static void openWebUrlExternal(Context context, @Nullable WebItem item, } List activities = context.getPackageManager() .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); + ArrayList intents = new ArrayList<>(); + for (ResolveInfo info : activities) { if (info.activityInfo.packageName.equalsIgnoreCase(context.getPackageName())) { continue; } - intents.add(createViewIntent(context, item, url, session) - .setPackage(info.activityInfo.packageName)); + intents.add( + createViewIntent(context, item, url, session) + .setPackage(info.activityInfo.packageName) + ); } if (intents.isEmpty()) { return; } - if (intents.size() == 1) { + final int size = intents.size(); + if (size == 1) { context.startActivity(intents.remove(0)); } else { context.startActivity(Intent.createChooser(intents.remove(0), context.getString(R.string.chooser_title)) .putExtra(Intent.EXTRA_INITIAL_INTENTS, - intents.toArray(new Parcelable[intents.size()]))); + intents.toArray(new Parcelable[size]))); } } @@ -191,7 +201,6 @@ public static CharSequence fromHtml(String htmlText, boolean compact) { spanned = Html.fromHtml(htmlText, compact ? Html.FROM_HTML_MODE_COMPACT : Html.FROM_HTML_MODE_LEGACY); } else { - //noinspection deprecation spanned = Html.fromHtml(htmlText); } return trim(spanned); @@ -202,16 +211,22 @@ public static Intent makeSendIntentChooser(Context context, Uri data) { // share receivers that accept only EXTRA_TEXT but not EXTRA_STREAM return Intent.createChooser(new Intent(Intent.ACTION_SEND_MULTIPLE) .setType("text/plain") - .putParcelableArrayListExtra(Intent.EXTRA_STREAM, - new ArrayList(){{add(data);}}), + .putParcelableArrayListExtra( + Intent.EXTRA_STREAM, + new ArrayList() {{ + add(data); + }} + ), context.getString(R.string.share_file)); } - public static void openExternal(@NonNull final Context context, - @NonNull PopupMenu popupMenu, - @NonNull View anchor, - @NonNull final WebItem item, - final CustomTabsSession session) { + public static void openExternal( + @NonNull final Context context, + @NonNull PopupMenu popupMenu, + @NonNull View anchor, + @NonNull final WebItem item, + final CustomTabsSession session + ) { if (TextUtils.isEmpty(item.getUrl()) || item.getUrl().startsWith(HackerNewsClient.BASE_WEB_URL)) { openWebUrlExternal(context, @@ -273,7 +288,7 @@ public static boolean isHackerNewsUrl(WebItem item) { public static int getDimensionInDp(Context context, @DimenRes int dimenResId) { return (int) (context.getResources().getDimension(dimenResId) / - context.getResources().getDisplayMetrics().density); + context.getResources().getDisplayMetrics().density); } public static void restart(Activity activity, boolean transition) { @@ -332,7 +347,8 @@ public static Pair getCredentials(Context context) { * If no accounts exist in user's device, regardless of login status, prompt to login again * If 1 or more accounts in user's device, and already logged in, prompt to update password * If 1 or more accounts in user's device, and logged out, show account chooser - * @param context activity context + * + * @param context activity context * @param alertDialogBuilder dialog builder */ @SuppressLint("MissingPermission") @@ -363,7 +379,6 @@ public static void registerAccountsUpdatedListener(final Context context) { }, null, true); } - @SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static void openPlayStore(Context context) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(PLAY_STORE_URL)); @@ -382,8 +397,11 @@ public static void openPlayStore(Context context) { } @SuppressLint("MissingPermission") - public static void showAccountChooser(final Context context, AlertDialogBuilder alertDialogBuilder, - Account[] accounts) { + public static void showAccountChooser( + final Context context, + AlertDialogBuilder alertDialogBuilder, + Account[] accounts + ) { String username = Preferences.getUsername(context); final String[] items = new String[accounts.length]; int checked = -1; @@ -422,7 +440,6 @@ public void onClick(DialogInterface dialog, int which) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { AccountManager.get(context).removeAccount(accounts[selection], null, null, null); } else { - //noinspection deprecation AccountManager.get(context).removeAccount(accounts[selection], null, null); } dialog.dismiss(); @@ -532,6 +549,7 @@ public static void share(Context context, String subject, String text) { context.startActivity(intent); } } + public static Uri createItemUri(@NonNull String itemId) { return new Uri.Builder() .scheme(BuildConfig.APPLICATION_ID) @@ -628,7 +646,6 @@ public static void setTextAppearance(TextView textView, @StyleRes int textAppear if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { textView.setTextAppearance(textAppearance); } else { - //noinspection deprecation textView.setTextAppearance(textView.getContext(), textAppearance); } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/BaseListActivity.java b/app/src/main/java/io/github/hidroh/materialistic/BaseListActivity.java index ea46cb0ef..da7f68abd 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/BaseListActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/BaseListActivity.java @@ -24,24 +24,25 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; +import android.text.TextUtils; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.SearchView; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import com.google.android.material.tabs.TabLayout; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; -import androidx.core.content.ContextCompat; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.SearchView; -import androidx.appcompat.widget.Toolbar; -import android.text.TextUtils; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; import javax.inject.Inject; @@ -96,7 +97,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); setTitle(getDefaultTitle()); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); findViewById(R.id.toolbar).setOnClickListener(v -> { @@ -105,18 +106,18 @@ protected void onCreate(Bundle savedInstanceState) { scrollable.scrollToTop(); } }); - mAppBar = (AppBarLayout) findViewById(R.id.appbar); + mAppBar = findViewById(R.id.appbar); mIsMultiPane = getResources().getBoolean(R.bool.multi_pane); if (mIsMultiPane) { LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter(WebFragment.ACTION_FULLSCREEN)); mListView = findViewById(android.R.id.list); - mTabLayout = (TabLayout) findViewById(R.id.tab_layout); + mTabLayout = findViewById(R.id.tab_layout); mTabLayout.setVisibility(View.GONE); - mViewPager = (ViewPager) findViewById(R.id.content); + mViewPager = findViewById(R.id.content); mViewPager.setVisibility(View.GONE); - mReplyButton = (FloatingActionButton) findViewById(R.id.reply_button); - mNavButton = (NavFloatingActionButton) findViewById(R.id.navigation_button); + mReplyButton = findViewById(R.id.reply_button); + mNavButton = findViewById(R.id.navigation_button); mNavButton.setNavigable(direction -> // if callback is fired navigable should not be null ((Navigable) ((ItemPagerAdapter) mViewPager.getAdapter()).getItem(0)) @@ -216,9 +217,13 @@ public boolean onOptionsItemSelected(MenuItem item) { } if (item.getItemId() == R.id.menu_external) { View anchor = findViewById(R.id.menu_external); - AppUtils.openExternal(this, mPopupMenu, anchor == null ? - findViewById(R.id.toolbar) : anchor, - mSelectedItem, mCustomTabsDelegate.getSession()); + AppUtils.openExternal( + this, + mPopupMenu, + anchor == null ? findViewById(R.id.toolbar) : anchor, + mSelectedItem, + mCustomTabsDelegate.getSession() + ); return true; } return super.onOptionsItemSelected(item); @@ -246,6 +251,7 @@ protected void onDestroy() { LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver); } } + @Override public void onBackPressed() { if (!mIsMultiPane || !mFullscreen) { @@ -314,6 +320,7 @@ public boolean isMultiPane() { /** * Checks if activity should have search view + * * @return true if is searchable, false otherwise */ protected boolean isSearchable() { @@ -322,19 +329,22 @@ protected boolean isSearchable() { /** * Gets default title to be displayed in list-only layout + * * @return displayed title */ protected abstract String getDefaultTitle(); /** * Creates list fragment to host list data + * * @return list fragment */ protected abstract Fragment instantiateListFragment(); /** * Gets cache mode for {@link ItemManager} - * @return cache mode + * + * @return cache mode */ @ItemManager.CacheMode protected int getItemCacheMode() { diff --git a/app/src/main/java/io/github/hidroh/materialistic/ComposeActivity.java b/app/src/main/java/io/github/hidroh/materialistic/ComposeActivity.java index d513ab170..13d86fbbb 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/ComposeActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/ComposeActivity.java @@ -18,9 +18,6 @@ import android.content.Context; import android.os.Bundle; -import androidx.core.content.ContextCompat; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; @@ -30,6 +27,9 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.ActionBar; +import androidx.core.content.ContextCompat; + import java.lang.ref.WeakReference; import javax.inject.Inject; @@ -62,11 +62,11 @@ protected void onCreate(Bundle savedInstanceState) { } AppUtils.setStatusBarColor(getWindow(), ContextCompat.getColor(this, R.color.blackT12)); setContentView(R.layout.activity_compose); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); //noinspection ConstantConditions getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP); - mEditText = (EditText) findViewById(R.id.edittext_body); + mEditText = findViewById(R.id.edittext_body); if (savedInstanceState == null) { mEditText.setText(Preferences.getDraft(this, mParentId)); } @@ -78,8 +78,8 @@ protected void onCreate(Bundle savedInstanceState) { mParentText = getIntent().getStringExtra(EXTRA_PARENT_TEXT); if (!TextUtils.isEmpty(mParentText)) { findViewById(R.id.quote).setVisibility(View.VISIBLE); - final TextView toggle = (TextView) findViewById(R.id.toggle); - final TextView textView = (TextView) findViewById(R.id.text); + final TextView toggle = findViewById(R.id.toggle); + final TextView textView = findViewById(R.id.text); AppUtils.setTextWithLinks(textView, AppUtils.fromHtml(mParentText)); toggle.setOnClickListener(v -> { if (textView.getVisibility() == View.VISIBLE) { @@ -163,8 +163,8 @@ public void onBackPressed() { .setNegativeButton(android.R.string.no, (dialog, which) -> ComposeActivity.super.onBackPressed()) .setPositiveButton(android.R.string.yes, (dialog, which) -> { - Preferences.saveDraft(this, mParentId, mEditText.getText().toString()); - ComposeActivity.super.onBackPressed(); + Preferences.saveDraft(this, mParentId, mEditText.getText().toString()); + ComposeActivity.super.onBackPressed(); }) .show(); } diff --git a/app/src/main/java/io/github/hidroh/materialistic/DrawerActivity.java b/app/src/main/java/io/github/hidroh/materialistic/DrawerActivity.java index a48858b02..2d3ce1b01 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/DrawerActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/DrawerActivity.java @@ -62,8 +62,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_drawer); mDrawer = findViewById(R.id.drawer); - mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); - mDrawerAccount = (TextView) findViewById(R.id.drawer_account); + mDrawerLayout = findViewById(R.id.drawer_layout); + mDrawerAccount = findViewById(R.id.drawer_account); mDrawerLogout = findViewById(R.id.drawer_logout); mDrawerUser = findViewById(R.id.drawer_user); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_drawer, @@ -129,18 +129,16 @@ protected void onDestroy() { @Override public void setContentView(int layoutResID) { - ViewGroup drawerLayout = (ViewGroup) findViewById(R.id.drawer_layout); + ViewGroup drawerLayout = findViewById(R.id.drawer_layout); View view = getLayoutInflater().inflate(layoutResID, drawerLayout, false); - //noinspection ConstantConditions drawerLayout.addView(view, 0); } - @SuppressWarnings("ConstantConditions") private void setUpDrawer() { mDrawerAccount.setOnClickListener(v -> showLogin()); mDrawerLogout.setOnClickListener(v -> confirmLogout()); View moreContainer = findViewById(R.id.drawer_more_container); - TextView moreToggle = (TextView) findViewById(R.id.drawer_more); + TextView moreToggle = findViewById(R.id.drawer_more); moreToggle.setOnClickListener(v -> { if (moreContainer.getVisibility() == View.VISIBLE) { moreToggle.setTextColor(ContextCompat.getColor(DrawerActivity.this, diff --git a/app/src/main/java/io/github/hidroh/materialistic/FavoriteFragment.java b/app/src/main/java/io/github/hidroh/materialistic/FavoriteFragment.java index 1f7175f15..4ec705e7e 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/FavoriteFragment.java +++ b/app/src/main/java/io/github/hidroh/materialistic/FavoriteFragment.java @@ -19,11 +19,6 @@ import android.app.SearchManager; import android.content.Context; import android.os.Bundle; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.view.ActionMode; -import androidx.recyclerview.widget.RecyclerView; -import androidx.appcompat.widget.SearchView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; @@ -32,6 +27,11 @@ import android.view.View; import android.view.ViewGroup; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.view.ActionMode; +import androidx.appcompat.widget.SearchView; + import javax.inject.Inject; import io.github.hidroh.materialistic.data.FavoriteManager; @@ -68,14 +68,17 @@ public void onCreate(Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_favorite, container, false); - mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); + mRecyclerView = view.findViewById(R.id.recycler_view); mEmptySearchView = view.findViewById(R.id.empty_search); mEmptyView = view.findViewById(R.id.empty); mEmptyView.findViewById(R.id.header_card_view) .setOnLongClickListener(v -> { View bookmark = mEmptyView.findViewById(R.id.bookmarked); - bookmark.setVisibility(bookmark.getVisibility() == View.VISIBLE ? - View.INVISIBLE : View.VISIBLE); + bookmark.setVisibility( + bookmark.getVisibility() == View.VISIBLE + ? View.INVISIBLE + : View.VISIBLE + ); return true; }); mEmptyView.setVisibility(View.INVISIBLE); @@ -149,6 +152,7 @@ public void onDetach() { /** * Filters list data by given query + * * @param query query used to filter data */ public void filter(String query) { diff --git a/app/src/main/java/io/github/hidroh/materialistic/FeedbackActivity.java b/app/src/main/java/io/github/hidroh/materialistic/FeedbackActivity.java index 0a76b3f32..a5fd725f9 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/FeedbackActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/FeedbackActivity.java @@ -17,13 +17,13 @@ package io.github.hidroh.materialistic; import android.os.Bundle; -import com.google.android.material.textfield.TextInputLayout; import android.view.View; import android.view.Window; import android.widget.EditText; -import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.textfield.TextInputLayout; + import java.lang.ref.WeakReference; import javax.inject.Inject; @@ -34,20 +34,17 @@ public class FeedbackActivity extends InjectableActivity { @Inject FeedbackClient mFeedbackClient; - @SuppressWarnings("ConstantConditions") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_feedback); - AppUtils.setTextWithLinks((TextView) findViewById(R.id.feedback_note), + AppUtils.setTextWithLinks(findViewById(R.id.feedback_note), AppUtils.fromHtml(getString(R.string.feedback_note))); - final TextInputLayout titleLayout = (TextInputLayout) - findViewById(R.id.textinput_title); - final TextInputLayout bodyLayout = (TextInputLayout) - findViewById(R.id.textinput_body); - final EditText title = (EditText) findViewById(R.id.edittext_title); - final EditText body = (EditText) findViewById(R.id.edittext_body); + final TextInputLayout titleLayout = findViewById(R.id.textinput_title); + final TextInputLayout bodyLayout = findViewById(R.id.textinput_body); + final EditText title = findViewById(R.id.edittext_title); + final EditText body = findViewById(R.id.edittext_body); final View sendButton = findViewById(R.id.feedback_button); findViewById(R.id.button_rate).setOnClickListener(v -> { AppUtils.openPlayStore(FeedbackActivity.this); @@ -85,7 +82,6 @@ void onFeedbackSent(boolean success) { if (success) { finish(); } else { - //noinspection ConstantConditions findViewById(R.id.feedback_button).setEnabled(true); } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/ItemActivity.java b/app/src/main/java/io/github/hidroh/materialistic/ItemActivity.java index 3c87b9e91..c74be82cf 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/ItemActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/ItemActivity.java @@ -348,7 +348,6 @@ public void onClick(View v) { }); } - @SuppressWarnings("ConstantConditions") private void bindData(@Nullable final WebItem story) { if (story == null) { return; @@ -406,7 +405,7 @@ public void onTabReselected(TabLayout.Tab tab) { } }); if (story.isStoryType() && mExternalBrowser && !hasText) { - TextView buttonArticle = (TextView) findViewById(R.id.button_article); + TextView buttonArticle = findViewById(R.id.button_article); buttonArticle.setVisibility(View.VISIBLE); buttonArticle.setOnClickListener(v -> AppUtils.openWebUrlExternal(ItemActivity.this, diff --git a/app/src/main/java/io/github/hidroh/materialistic/ItemFragment.java b/app/src/main/java/io/github/hidroh/materialistic/ItemFragment.java index a6322990d..113cc92a4 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/ItemFragment.java +++ b/app/src/main/java/io/github/hidroh/materialistic/ItemFragment.java @@ -112,11 +112,11 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, if (isNewInstance()) { mFragmentView = inflater.inflate(R.layout.fragment_item, container, false); mEmptyView = mFragmentView.findViewById(R.id.empty); - mRecyclerView = (RecyclerView) mFragmentView.findViewById(R.id.recycler_view); + mRecyclerView = mFragmentView.findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new SnappyLinearLayoutManager(getActivity(), true)); mItemDecoration = new CommentItemDecoration(getActivity()); mRecyclerView.addItemDecoration(mItemDecoration); - mSwipeRefreshLayout = (SwipeRefreshLayout) mFragmentView.findViewById(R.id.swipe_layout); + mSwipeRefreshLayout = mFragmentView.findViewById(R.id.swipe_layout); mSwipeRefreshLayout.setColorSchemeResources(R.color.white); mSwipeRefreshLayout.setProgressBackgroundColorSchemeResource(R.color.redA200); mSwipeRefreshLayout.setOnRefreshListener(() -> { diff --git a/app/src/main/java/io/github/hidroh/materialistic/LoginActivity.java b/app/src/main/java/io/github/hidroh/materialistic/LoginActivity.java index b15b2c806..406b45ff9 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/LoginActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/LoginActivity.java @@ -50,9 +50,9 @@ protected void onCreate(Bundle savedInstanceState) { String username = Preferences.getUsername(this); boolean addAccount = getIntent().getBooleanExtra(EXTRA_ADD_ACCOUNT, false); setContentView(R.layout.activity_login); - mUsernameLayout = (TextInputLayout) findViewById(R.id.textinput_username); - mPasswordLayout = (TextInputLayout) findViewById(R.id.textinput_password); - mUsernameEditText = (EditText) findViewById(R.id.edittext_username); + mUsernameLayout = findViewById(R.id.textinput_username); + mPasswordLayout = findViewById(R.id.textinput_password); + mUsernameEditText = findViewById(R.id.edittext_username); mLoginButton = findViewById(R.id.login_button); mRegisterButton = findViewById(R.id.register_button); if (!addAccount && !TextUtils.isEmpty(username)) { @@ -60,7 +60,7 @@ protected void onCreate(Bundle savedInstanceState) { mUsernameEditText.setText(username); mRegisterButton.setVisibility(View.GONE); } - mPasswordEditText = (EditText) findViewById(R.id.edittext_password); + mPasswordEditText = findViewById(R.id.edittext_password); mLoginButton.setOnClickListener(v -> { if (!validate()) { return; diff --git a/app/src/main/java/io/github/hidroh/materialistic/OfflineWebActivity.java b/app/src/main/java/io/github/hidroh/materialistic/OfflineWebActivity.java index cf2184e55..0a9b6e424 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/OfflineWebActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/OfflineWebActivity.java @@ -44,15 +44,15 @@ protected void onCreate(Bundle savedInstanceState) { } setTitle(url); setContentView(R.layout.activity_offline_web); - final NestedScrollView scrollView = (NestedScrollView) findViewById(R.id.nested_scroll_view); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + final NestedScrollView scrollView = findViewById(R.id.nested_scroll_view); + Toolbar toolbar = findViewById(R.id.toolbar); toolbar.setOnClickListener(v -> scrollView.smoothScrollTo(0, 0)); setSupportActionBar(toolbar); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); getSupportActionBar().setSubtitle(R.string.offline); - final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress); - final WebView webView = (WebView) findViewById(R.id.web_view); + final ProgressBar progressBar = findViewById(R.id.progress); + final WebView webView = findViewById(R.id.web_view); webView.setBackgroundColor(Color.TRANSPARENT); webView.setWebViewClient(new AdBlockWebViewClient(Preferences.adBlockEnabled(this)) { @Override diff --git a/app/src/main/java/io/github/hidroh/materialistic/PopupSettingsFragment.java b/app/src/main/java/io/github/hidroh/materialistic/PopupSettingsFragment.java index 20fa4aef1..3a9bc0e97 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/PopupSettingsFragment.java +++ b/app/src/main/java/io/github/hidroh/materialistic/PopupSettingsFragment.java @@ -19,18 +19,17 @@ import android.app.Dialog; import android.content.Context; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StyleRes; -import androidx.fragment.app.Fragment; import androidx.appcompat.app.AppCompatDialogFragment; +import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.google.android.material.bottomsheet.BottomSheetDialog; public class PopupSettingsFragment extends AppCompatDialogFragment { static final String EXTRA_TITLE = PopupSettingsFragment.class.getName() + ".EXTRA_TITLE"; diff --git a/app/src/main/java/io/github/hidroh/materialistic/PreferencesActivity.java b/app/src/main/java/io/github/hidroh/materialistic/PreferencesActivity.java index 058cc8370..411ece758 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/PreferencesActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/PreferencesActivity.java @@ -17,11 +17,11 @@ package io.github.hidroh.materialistic; import android.os.Bundle; -import androidx.fragment.app.Fragment; +import android.view.MenuItem; + import androidx.appcompat.app.ActionBar; +import androidx.fragment.app.Fragment; import androidx.preference.PreferenceFragmentCompat; -import androidx.appcompat.widget.Toolbar; -import android.view.MenuItem; public class PreferencesActivity extends ThemedActivity { public static final String EXTRA_TITLE = PreferencesActivity.class.getName() + ".EXTRA_TITLE"; @@ -32,7 +32,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preferences); setTitle(getIntent().getIntExtra(EXTRA_TITLE, 0)); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); //noinspection ConstantConditions getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); diff --git a/app/src/main/java/io/github/hidroh/materialistic/ReleaseNotesActivity.kt b/app/src/main/java/io/github/hidroh/materialistic/ReleaseNotesActivity.kt index 70a2a53da..08dd2fa4a 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/ReleaseNotesActivity.kt +++ b/app/src/main/java/io/github/hidroh/materialistic/ReleaseNotesActivity.kt @@ -30,8 +30,8 @@ class ReleaseNotesActivity : InjectableActivity() { super.onCreate(savedInstanceState) supportRequestWindowFeature(Window.FEATURE_NO_TITLE) setContentView(R.layout.activity_release) - findViewById(R.id.button_ok).setOnClickListener { _ -> finish() } - findViewById(R.id.button_rate).setOnClickListener { _ -> + findViewById(R.id.button_ok).setOnClickListener { finish() } + findViewById(R.id.button_rate).setOnClickListener { AppUtils.openPlayStore(this) finish() } diff --git a/app/src/main/java/io/github/hidroh/materialistic/SettingsActivity.java b/app/src/main/java/io/github/hidroh/materialistic/SettingsActivity.java index aa814f859..020668659 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/SettingsActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/SettingsActivity.java @@ -19,11 +19,11 @@ import android.content.Intent; import android.os.Bundle; import android.provider.SearchRecentSuggestions; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; +import androidx.appcompat.app.ActionBar; + import javax.inject.Inject; import io.github.hidroh.materialistic.data.SearchRecentSuggestionsProvider; @@ -35,7 +35,7 @@ public class SettingsActivity extends DrawerActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); //noinspection ConstantConditions getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); diff --git a/app/src/main/java/io/github/hidroh/materialistic/StoryListViewModel.java b/app/src/main/java/io/github/hidroh/materialistic/StoryListViewModel.java index c6bc91f3a..de1be2736 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/StoryListViewModel.java +++ b/app/src/main/java/io/github/hidroh/materialistic/StoryListViewModel.java @@ -27,7 +27,7 @@ public LiveData> getStories(String filter, @ItemManager.Cac Observable.fromCallable(() -> mItemManager.getStories(filter, cacheMode)) .subscribeOn(mIoThreadScheduler) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(items -> setItems(items)); + .subscribe(this::setItems); } return mItems; } @@ -39,7 +39,7 @@ public void refreshStories(String filter, @ItemManager.CacheMode int cacheMode) Observable.fromCallable(() -> mItemManager.getStories(filter, cacheMode)) .subscribeOn(mIoThreadScheduler) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(items -> setItems(items)); + .subscribe(this::setItems); } diff --git a/app/src/main/java/io/github/hidroh/materialistic/SubmitActivity.java b/app/src/main/java/io/github/hidroh/materialistic/SubmitActivity.java index 48af18790..94946cc27 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/SubmitActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/SubmitActivity.java @@ -19,11 +19,6 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import androidx.annotation.NonNull; -import com.google.android.material.textfield.TextInputLayout; -import androidx.core.content.ContextCompat; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; @@ -32,6 +27,12 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.core.content.ContextCompat; + +import com.google.android.material.textfield.TextInputLayout; + import java.lang.ref.WeakReference; import java.net.MalformedURLException; import java.net.URL; @@ -62,14 +63,14 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AppUtils.setStatusBarColor(getWindow(), ContextCompat.getColor(this, R.color.blackT12)); setContentView(R.layout.activity_submit); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); //noinspection ConstantConditions getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP); - mTitleLayout = (TextInputLayout) findViewById(R.id.textinput_title); - mContentLayout = (TextInputLayout) findViewById(R.id.textinput_content); - mTitleEditText = (TextView) findViewById(R.id.edittext_title); - mContentEditText = (TextView) findViewById(R.id.edittext_content); + mTitleLayout = findViewById(R.id.textinput_title); + mContentLayout = findViewById(R.id.textinput_content); + mTitleEditText = findViewById(R.id.edittext_title); + mContentEditText = findViewById(R.id.edittext_content); String text, subject; if (savedInstanceState == null) { subject = getIntent().getStringExtra(Intent.EXTRA_SUBJECT); diff --git a/app/src/main/java/io/github/hidroh/materialistic/ThreadPreviewActivity.java b/app/src/main/java/io/github/hidroh/materialistic/ThreadPreviewActivity.java index 7e56d7d97..627aa8925 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/ThreadPreviewActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/ThreadPreviewActivity.java @@ -17,13 +17,13 @@ package io.github.hidroh.materialistic; import android.os.Bundle; -import androidx.appcompat.app.ActionBar; -import androidx.recyclerview.widget.RecyclerView; -import androidx.appcompat.widget.Toolbar; import android.view.KeyEvent; import android.view.MenuItem; import android.view.Window; +import androidx.appcompat.app.ActionBar; +import androidx.recyclerview.widget.RecyclerView; + import javax.inject.Inject; import javax.inject.Named; @@ -49,11 +49,11 @@ protected void onCreate(Bundle savedInstanceState) { } supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_thread_preview); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); //noinspection ConstantConditions getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP); - RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); + RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new SnappyLinearLayoutManager(this, false)); recyclerView.addItemDecoration(new CommentItemDecoration(this)); recyclerView.setAdapter(new ThreadPreviewRecyclerViewAdapter(mItemManager, item)); diff --git a/app/src/main/java/io/github/hidroh/materialistic/UserActivity.java b/app/src/main/java/io/github/hidroh/materialistic/UserActivity.java index bf881c859..22aa8219c 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/UserActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/UserActivity.java @@ -67,7 +67,6 @@ public class UserActivity extends InjectableActivity implements Scrollable { private View mEmpty; private BottomSheetBehavior mBottomSheetBehavior; - @SuppressWarnings("ConstantConditions") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -110,12 +109,12 @@ public void onSlide(@NonNull View bottomSheet, float slideOffset) { // no op } }); - mTitle = (TextView) findViewById(R.id.title); + mTitle = findViewById(R.id.title); mTitle.setText(mUsername); - mInfo = (TextView) findViewById(R.id.user_info); - mAbout = (TextView) findViewById(R.id.about); + mInfo = findViewById(R.id.user_info); + mAbout = findViewById(R.id.about); mEmpty = findViewById(R.id.empty); - mTabLayout = (TabLayout) findViewById(R.id.tab_layout); + mTabLayout = findViewById(R.id.tab_layout); mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { @@ -132,7 +131,7 @@ public void onTabReselected(TabLayout.Tab tab) { scrollToTop(); } }); - mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); + mRecyclerView = findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new SnappyLinearLayoutManager(this, true)); mRecyclerView.addItemDecoration(new CommentItemDecoration(this)); mScrollableHelper = new KeyDelegate.RecyclerViewHelper(mRecyclerView, diff --git a/app/src/main/java/io/github/hidroh/materialistic/WebFragment.java b/app/src/main/java/io/github/hidroh/materialistic/WebFragment.java index 2667daa8f..a202bb989 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/WebFragment.java +++ b/app/src/main/java/io/github/hidroh/materialistic/WebFragment.java @@ -145,16 +145,16 @@ public void onCreate(@Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (isNewInstance()) { mFragmentView = inflater.inflate(R.layout.fragment_web, container, false); - mFullscreenView = (ViewGroup) mFragmentView.findViewById(R.id.fullscreen); - mScrollViewContent = (ViewGroup) mFragmentView.findViewById(R.id.scroll_view_content); - mScrollView = (NestedScrollView) mFragmentView.findViewById(R.id.nested_scroll_view); - mControls = (ViewSwitcher) mFragmentView.findViewById(R.id.control_switcher); - mWebView = (WebView) mFragmentView.findViewById(R.id.web_view); - mButtonRefresh = (ImageButton) mFragmentView.findViewById(R.id.button_refresh); + mFullscreenView = mFragmentView.findViewById(R.id.fullscreen); + mScrollViewContent = mFragmentView.findViewById(R.id.scroll_view_content); + mScrollView = mFragmentView.findViewById(R.id.nested_scroll_view); + mControls = mFragmentView.findViewById(R.id.control_switcher); + mWebView = mFragmentView.findViewById(R.id.web_view); + mButtonRefresh = mFragmentView.findViewById(R.id.button_refresh); mButtonMore = mFragmentView.findViewById(R.id.button_more); mButtonNext = mFragmentView.findViewById(R.id.button_next); mButtonNext.setEnabled(false); - mEditText = (EditText) mFragmentView.findViewById(R.id.edittext); + mEditText = mFragmentView.findViewById(R.id.edittext); setUpWebControls(mFragmentView); setUpWebView(mFragmentView); } @@ -423,7 +423,7 @@ private void setUpWebControls(View view) { } private void setUpWebView(View view) { - mProgressBar = (ProgressBar) view.findViewById(R.id.progress); + mProgressBar = view.findViewById(R.id.progress); mWebView.setBackgroundColor(Color.TRANSPARENT); mWebView.setWebViewClient(new AdBlockWebViewClient(Preferences.adBlockEnabled(getActivity())) { @Override @@ -561,7 +561,6 @@ private void findInPage() { }); mWebView.findAllAsync(query); } else { - //noinspection deprecation handleFindResults(mWebView.findAll(query)); } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/accounts/UserServicesClient.java b/app/src/main/java/io/github/hidroh/materialistic/accounts/UserServicesClient.java index 3a68730ba..255424d7c 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/accounts/UserServicesClient.java +++ b/app/src/main/java/io/github/hidroh/materialistic/accounts/UserServicesClient.java @@ -18,10 +18,11 @@ import android.content.Context; import android.net.Uri; -import androidx.core.util.Pair; import android.text.TextUtils; import android.widget.Toast; +import androidx.core.util.Pair; + import java.io.IOException; import java.net.HttpURLConnection; import java.util.regex.Matcher; @@ -140,9 +141,9 @@ public void submit(Context context, String title, String content, boolean isUrl, */ // fetch submit page with given credentials execute(postSubmitForm(credentials.first, credentials.second)) - .flatMap(response -> response.code() != HttpURLConnection.HTTP_MOVED_TEMP ? - Observable.just(response) : - Observable.error(new IOException())) + .flatMap(response -> response.code() != HttpURLConnection.HTTP_MOVED_TEMP + ? Observable.just(response) + : Observable.error(new IOException())) .flatMap(response -> { try { return Observable.just(new String[]{ @@ -159,16 +160,16 @@ public void submit(Context context, String title, String content, boolean isUrl, array[1] = getInputValue(array[1], SUBMIT_PARAM_FNID); return array; }) - .flatMap(array -> !TextUtils.isEmpty(array[1]) ? - Observable.just(array) : - Observable.error(new IOException())) + .flatMap(array -> !TextUtils.isEmpty(array[1]) + ? Observable.just(array) + : Observable.error(new IOException())) .flatMap(array -> execute(postSubmit(title, content, isUrl, array[0], array[1]))) - .flatMap(response -> response.code() == HttpURLConnection.HTTP_MOVED_TEMP ? - Observable.just(Uri.parse(response.header(HEADER_LOCATION))) : - Observable.error(new IOException())) - .flatMap(uri -> TextUtils.equals(uri.getPath(), DEFAULT_SUBMIT_REDIRECT) ? - Observable.just(true) : - Observable.error(buildException(uri))) + .flatMap(response -> response.code() == HttpURLConnection.HTTP_MOVED_TEMP + ? Observable.just(Uri.parse(response.header(HEADER_LOCATION))) + : Observable.error(new IOException())) + .flatMap(uri -> TextUtils.equals(uri.getPath(), DEFAULT_SUBMIT_REDIRECT) + ? Observable.just(true) + : Observable.error(buildException(uri))) .observeOn(AndroidSchedulers.mainThread()) .subscribe(callback::onDone, callback::onError); } @@ -262,17 +263,15 @@ private Observable execute(Request request) { } private Throwable buildException(Uri uri) { - switch (uri.getPath()) { - case ITEM_PATH: - UserServices.Exception exception = new UserServices.Exception(R.string.item_exist); - String itemId = uri.getQueryParameter(ITEM_PARAM_ID); - if (!TextUtils.isEmpty(itemId)) { - exception.data = AppUtils.createItemUri(itemId); - } - return exception; - default: - return new IOException(); + if (ITEM_PATH.equals(uri.getPath())) { + Exception exception = new Exception(R.string.item_exist); + String itemId = uri.getQueryParameter(ITEM_PARAM_ID); + if (!TextUtils.isEmpty(itemId)) { + exception.data = AppUtils.createItemUri(itemId); + } + return exception; } + return new IOException(); } private String getInputValue(String html, String name) { diff --git a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivity.java b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivity.java index f65b6112c..837c52ef3 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivity.java +++ b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivity.java @@ -53,7 +53,6 @@ protected void onCreate(Bundle savedInstanceState) { WidgetConfigurationFragment.class.getName()) .commit(); } - //noinspection ConstantConditions findViewById(R.id.button_ok).setOnClickListener(v -> configure()); } diff --git a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetHelper.java b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetHelper.java index 36bc64187..23a315f65 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetHelper.java +++ b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetHelper.java @@ -161,7 +161,6 @@ private void updateCollection(int appWidgetId, RemoteViews remoteViews, WidgetCo if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { remoteViews.setRemoteAdapter(android.R.id.list, intent); } else { - //noinspection deprecation remoteViews.setRemoteAdapter(appWidgetId, android.R.id.list, intent); } remoteViews.setEmptyView(android.R.id.list, R.id.empty); diff --git a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetProvider.java b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetProvider.java index 0914fe4a4..9273c8cd9 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetProvider.java +++ b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetProvider.java @@ -20,12 +20,9 @@ import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; -import android.os.Build; import android.text.TextUtils; -import android.widget.Toast; import io.github.hidroh.materialistic.BuildConfig; -import io.github.hidroh.materialistic.R; public class WidgetProvider extends AppWidgetProvider { diff --git a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetService.java b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetService.java index 0dbd3eebb..48807aee5 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetService.java +++ b/app/src/main/java/io/github/hidroh/materialistic/appwidget/WidgetService.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.Intent; import android.os.Build; -import androidx.core.content.ContextCompat; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; @@ -29,6 +28,8 @@ import android.widget.RemoteViews; import android.widget.RemoteViewsService; +import androidx.core.content.ContextCompat; + import java.util.Locale; import javax.inject.Inject; @@ -36,7 +37,6 @@ import io.github.hidroh.materialistic.ActivityModule; import io.github.hidroh.materialistic.AppUtils; -import io.github.hidroh.materialistic.Application; import io.github.hidroh.materialistic.Injectable; import io.github.hidroh.materialistic.R; import io.github.hidroh.materialistic.data.Item; diff --git a/app/src/main/java/io/github/hidroh/materialistic/data/AlgoliaClient.java b/app/src/main/java/io/github/hidroh/materialistic/data/AlgoliaClient.java index caa52a8cf..7ffe4340f 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/data/AlgoliaClient.java +++ b/app/src/main/java/io/github/hidroh/materialistic/data/AlgoliaClient.java @@ -96,7 +96,6 @@ private Item[] toItems(AlgoliaHits algoliaHits) { Hit[] hits = algoliaHits.hits; Item[] stories = new Item[hits == null ? 0 : hits.length]; for (int i = 0; i < stories.length; i++) { - //noinspection ConstantConditions HackerNewsItem item = new HackerNewsItem( Long.parseLong(hits[i].objectID)); item.rank = i + 1; diff --git a/app/src/main/java/io/github/hidroh/materialistic/data/MaterialisticDatabase.java b/app/src/main/java/io/github/hidroh/materialistic/data/MaterialisticDatabase.java index 054425efb..43fa90329 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/data/MaterialisticDatabase.java +++ b/app/src/main/java/io/github/hidroh/materialistic/data/MaterialisticDatabase.java @@ -1,8 +1,16 @@ package io.github.hidroh.materialistic.data; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; +import android.provider.BaseColumns; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; -import androidx.sqlite.db.SupportSQLiteDatabase; import androidx.room.ColumnInfo; import androidx.room.Dao; import androidx.room.Database; @@ -14,15 +22,10 @@ import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.room.migration.Migration; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.provider.BaseColumns; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; +import androidx.sqlite.db.SupportSQLiteDatabase; import java.util.List; +import java.util.Objects; @Database( entities = { @@ -132,7 +135,13 @@ public boolean equals(Object o) { ReadStory readStory = (ReadStory) o; if (id != readStory.id) return false; - return itemId != null ? itemId.equals(readStory.itemId) : readStory.itemId == null; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + return Objects.equals(itemId, readStory.itemId); + } else { + return itemId != null + ? itemId.equals(readStory.itemId) + : readStory.itemId == null; + } } @Override @@ -189,9 +198,16 @@ public boolean equals(Object o) { Readable readable = (Readable) o; if (id != readable.id) return false; - if (itemId != null ? !itemId.equals(readable.itemId) : readable.itemId != null) - return false; - return content != null ? content.equals(readable.content) : readable.content == null; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (!Objects.equals(itemId, readable.itemId)) return false; + return Objects.equals(content, readable.content); + } else { + if (itemId != null ? !itemId.equals(readable.itemId) : readable.itemId != null) { + return false; + } + return content != null ? content.equals(readable.content) : readable.content == null; + } } @Override diff --git a/app/src/main/java/io/github/hidroh/materialistic/preference/FontPreference.java b/app/src/main/java/io/github/hidroh/materialistic/preference/FontPreference.java index 6e23a9cd3..8ba995ea3 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/preference/FontPreference.java +++ b/app/src/main/java/io/github/hidroh/materialistic/preference/FontPreference.java @@ -48,7 +48,7 @@ protected View createDropDownView(int position, ViewGroup parent) { @Override protected void bindDropDownView(int position, View view) { - TextView textView = (TextView) view.findViewById(android.R.id.text1); + TextView textView = view.findViewById(android.R.id.text1); textView.setTypeface(FontCache.getInstance().get(getContext(), mEntryValues[position])); textView.setText(mEntries[position]); } diff --git a/app/src/main/java/io/github/hidroh/materialistic/preference/FontSizePreference.java b/app/src/main/java/io/github/hidroh/materialistic/preference/FontSizePreference.java index 4c73aeb58..e73a28d41 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/preference/FontSizePreference.java +++ b/app/src/main/java/io/github/hidroh/materialistic/preference/FontSizePreference.java @@ -48,7 +48,7 @@ protected View createDropDownView(int position, ViewGroup parent) { @Override protected void bindDropDownView(int position, View view) { - TextView textView = (TextView) view.findViewById(android.R.id.text1); + TextView textView = view.findViewById(android.R.id.text1); float textSize = AppUtils.getDimension(getContext(), Preferences.Theme.resolveTextSize(mEntryValues[position]), R.attr.contentTextSize); diff --git a/app/src/main/java/io/github/hidroh/materialistic/preference/SimpleSpinnerPreference.java b/app/src/main/java/io/github/hidroh/materialistic/preference/SimpleSpinnerPreference.java index 05eb3f260..d046f1abb 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/preference/SimpleSpinnerPreference.java +++ b/app/src/main/java/io/github/hidroh/materialistic/preference/SimpleSpinnerPreference.java @@ -47,7 +47,7 @@ protected View createDropDownView(int position, ViewGroup parent) { @Override protected void bindDropDownView(int position, View view) { - TextView textView = (TextView) view.findViewById(android.R.id.text1); + TextView textView = view.findViewById(android.R.id.text1); textView.setText(mEntries[position]); } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/AppBarSwipeRefreshLayout.java b/app/src/main/java/io/github/hidroh/materialistic/widget/AppBarSwipeRefreshLayout.java index b403adf10..572106e00 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/AppBarSwipeRefreshLayout.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/AppBarSwipeRefreshLayout.java @@ -44,7 +44,7 @@ public AppBarSwipeRefreshLayout(Context context, AttributeSet attrs) { protected void onAttachedToWindow() { super.onAttachedToWindow(); if (getContext() instanceof Activity) { - mAppBar = (AppBarLayout) ((Activity) getContext()).findViewById(R.id.appbar); + mAppBar = ((Activity) getContext()).findViewById(R.id.appbar); if (mAppBar != null) { mAppBar.addOnOffsetChangedListener(this); } diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/ItemRecyclerViewAdapter.java b/app/src/main/java/io/github/hidroh/materialistic/widget/ItemRecyclerViewAdapter.java index 08f9231ba..48d9b235c 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/ItemRecyclerViewAdapter.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/ItemRecyclerViewAdapter.java @@ -20,10 +20,6 @@ import android.content.Context; import android.content.Intent; import android.content.res.TypedArray; -import android.os.Build; -import androidx.annotation.CallSuper; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.view.Gravity; @@ -32,6 +28,10 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.CallSuper; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + import java.lang.ref.WeakReference; import java.util.HashMap; import java.util.Map; @@ -283,11 +283,11 @@ static class ItemViewHolder extends RecyclerView.ViewHolder { ItemViewHolder(View itemView) { super(itemView); - mPostedTextView = (TextView) itemView.findViewById(R.id.posted); + mPostedTextView = itemView.findViewById(R.id.posted); mPostedTextView.setMovementMethod(LinkMovementMethod.getInstance()); - mContentTextView = (TextView) itemView.findViewById(R.id.text); - mReadMoreTextView = (TextView) itemView.findViewById(R.id.more); - mCommentButton = (TextView) itemView.findViewById(R.id.comment); + mContentTextView = itemView.findViewById(R.id.text); + mReadMoreTextView = itemView.findViewById(R.id.more); + mCommentButton = itemView.findViewById(R.id.comment); mCommentButton.setVisibility(View.GONE); mMoreButton = itemView.findViewById(R.id.button_more); mContentView = itemView.findViewById(R.id.content); @@ -309,8 +309,7 @@ private static class ItemResponseListener implements ResponseListener { private final Item mPartialItem; @Synthetic - ItemResponseListener(ItemRecyclerViewAdapter adapter, int position, - Item partialItem) { + ItemResponseListener(ItemRecyclerViewAdapter adapter, int position, Item partialItem) { mAdapter = new WeakReference<>(adapter); mPosition = position; mPartialItem = partialItem; diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/ListRecyclerViewAdapter.java b/app/src/main/java/io/github/hidroh/materialistic/widget/ListRecyclerViewAdapter.java index dad162e11..786d9f6ba 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/ListRecyclerViewAdapter.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/ListRecyclerViewAdapter.java @@ -303,7 +303,7 @@ public void bindMoreOptions(ShowMoreOptionsListener listener, boolean allowLongC return true; }); } - mStoryView.getMoreOptions().setOnClickListener(v -> listener.showMoreOptions(v)); + mStoryView.getMoreOptions().setOnClickListener(listener::showMoreOptions); } } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/NavFloatingActionButton.java b/app/src/main/java/io/github/hidroh/materialistic/widget/NavFloatingActionButton.java index b8d355096..94ad43201 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/NavFloatingActionButton.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/NavFloatingActionButton.java @@ -243,7 +243,6 @@ private void stopObservingViewTree() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { - //noinspection deprecation getViewTreeObserver().removeGlobalOnLayoutListener(this); } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/StoryView.java b/app/src/main/java/io/github/hidroh/materialistic/widget/StoryView.java index cf49c5043..ca6fc939b 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/StoryView.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/StoryView.java @@ -103,14 +103,14 @@ public StoryView(Context context, @Nullable AttributeSet attrs, int defStyle) { inflate(context, mIsLocal ? R.layout.local_story_view : R.layout.story_view, this); mBackground = findViewById(R.id.background); mBackground.setBackgroundColor(mBackgroundColor); - mVoteSwitcher = (ViewSwitcher) findViewById(R.id.vote_switcher); - mRankTextView = (TextView) findViewById(R.id.rank); - mScoreTextView = (TextView) findViewById(R.id.score); + mVoteSwitcher = findViewById(R.id.vote_switcher); + mRankTextView = findViewById(R.id.rank); + mScoreTextView = findViewById(R.id.score); mBookmarked = findViewById(R.id.bookmarked); - mPostedTextView = (TextView) findViewById(R.id.posted); - mTitleTextView = (TextView) findViewById(R.id.title); - mSourceTextView = (TextView) findViewById(R.id.source); - mCommentButton = (TextView) findViewById(R.id.comment); + mPostedTextView = findViewById(R.id.posted); + mTitleTextView = findViewById(R.id.title); + mSourceTextView = findViewById(R.id.source); + mCommentButton = findViewById(R.id.comment); mCommentButton.setCompoundDrawablesWithIntrinsicBounds(mCommentDrawable, null, null, null); mMoreButton = findViewById(R.id.button_more); // replace with bounded ripple as unbounded ripple requires container bg diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/SubmissionViewHolder.java b/app/src/main/java/io/github/hidroh/materialistic/widget/SubmissionViewHolder.java index 94eca2df1..2962fb7b4 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/SubmissionViewHolder.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/SubmissionViewHolder.java @@ -26,7 +26,7 @@ class SubmissionViewHolder extends ItemRecyclerViewAdapter.ItemViewHolder { SubmissionViewHolder(View itemView) { super(itemView); - mTitleTextView = (android.widget.TextView) itemView.findViewById(R.id.title); + mTitleTextView = itemView.findViewById(R.id.title); mCommentButton.setText(R.string.view_story); } } diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/ToggleItemViewHolder.java b/app/src/main/java/io/github/hidroh/materialistic/widget/ToggleItemViewHolder.java index 839b1bdbc..c44d7b3e5 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/ToggleItemViewHolder.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/ToggleItemViewHolder.java @@ -29,7 +29,7 @@ public class ToggleItemViewHolder extends ItemRecyclerViewAdapter.ItemViewHolder ToggleItemViewHolder(View itemView) { super(itemView); mToggleButton = itemView.findViewById(R.id.button_toggle); - mToggle = (TextView) itemView.findViewById(R.id.toggle); + mToggle = itemView.findViewById(R.id.toggle); mLevel = itemView.findViewById(R.id.level); } diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/WebView.java b/app/src/main/java/io/github/hidroh/materialistic/widget/WebView.java index 7a398fa18..63491b85a 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/WebView.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/WebView.java @@ -110,7 +110,6 @@ public void onPageFinished(android.webkit.WebView view, String url) { } @TargetApi(Build.VERSION_CODES.HONEYCOMB) - @SuppressWarnings("deprecation") @Override public WebResourceResponse shouldInterceptRequest(android.webkit.WebView view, String url) { return mClient != null ? mClient.shouldInterceptRequest(view, url) : diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpLazyLoadView.java b/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpLazyLoadView.java index c0b2033c8..e46fe832d 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpLazyLoadView.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpLazyLoadView.java @@ -34,7 +34,7 @@ public HelpLazyLoadView(Context context, AttributeSet attrs) { @Override protected void onFinishInflate() { super.onFinishInflate(); - TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); + TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText(R.string.comments)); tabLayout.addTab(tabLayout.newTab().setText(R.string.article)); Preferences.StoryViewMode defaultView = Preferences.getDefaultStoryView(getContext()); diff --git a/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpListView.java b/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpListView.java index ce40f29c8..9f17a3127 100644 --- a/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpListView.java +++ b/app/src/main/java/io/github/hidroh/materialistic/widget/preference/HelpListView.java @@ -53,7 +53,7 @@ protected void onFinishInflate() { ContextCompat.getColor(getContext(), R.color.greenA700)), 0, spannable.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ((TextView) findViewById(R.id.item_promoted).findViewById(R.id.rank)).append(spannable); - TextView comments = (TextView) findViewById(R.id.item_new_comments).findViewById(R.id.comment); + TextView comments = findViewById(R.id.item_new_comments).findViewById(R.id.comment); SpannableStringBuilder sb = new SpannableStringBuilder("46"); sb.append(makeAsteriskSpan()); comments.setText(sb); diff --git a/app/src/main/res/values/non_translatable.xml b/app/src/main/res/values/non_translatable.xml index d1eed3ad7..cfe8a0557 100644 --- a/app/src/main/res/values/non_translatable.xml +++ b/app/src/main/res/values/non_translatable.xml @@ -79,7 +79,7 @@ actively working on an alternative solution for this.
  • - Certain websites don't load or show up blank in-app. You can try to disable + Certain websites don\'t load or show up blank in-app. You can try to disable in-app ad blocker to see if it helps. At the same time please file a feedback with the website/article that fails to load so it can be fixed!
  • diff --git a/app/src/test/java/io/github/hidroh/materialistic/DrawerActivityLoginTest.java b/app/src/test/java/io/github/hidroh/materialistic/DrawerActivityLoginTest.java index 24a9ce35b..5956f7eea 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/DrawerActivityLoginTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/DrawerActivityLoginTest.java @@ -26,7 +26,6 @@ import static org.junit.Assert.assertNotNull; import static org.robolectric.Shadows.shadowOf; -@SuppressWarnings("ConstantConditions") @Config(shadows = {ShadowSupportDrawerLayout.class}) @RunWith(TestRunner.class) public class DrawerActivityLoginTest { diff --git a/app/src/test/java/io/github/hidroh/materialistic/FavoriteActivityTest.java b/app/src/test/java/io/github/hidroh/materialistic/FavoriteActivityTest.java index 9e401941c..be2d449e6 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/FavoriteActivityTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/FavoriteActivityTest.java @@ -112,7 +112,7 @@ public void setUp() { when(favoriteManager.getItem(eq(1))).thenReturn(new TestFavorite( "2", "http://example.com", "ask HN", System.currentTimeMillis())); activity = controller.create().postCreate(null).start().resume().visible().get(); // skip menu due to search view - recyclerView = (RecyclerView) activity.findViewById(R.id.recycler_view); + recyclerView = activity.findViewById(R.id.recycler_view); adapter = recyclerView.getAdapter(); shadowAdapter = customShadowOf(adapter); fragment = activity.getSupportFragmentManager().findFragmentById(android.R.id.list); diff --git a/app/src/test/java/io/github/hidroh/materialistic/FeedbackActivityTest.java b/app/src/test/java/io/github/hidroh/materialistic/FeedbackActivityTest.java index 6b84d5da1..667020719 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/FeedbackActivityTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/FeedbackActivityTest.java @@ -1,9 +1,10 @@ package io.github.hidroh.materialistic; import android.annotation.SuppressLint; -import com.google.android.material.textfield.TextInputLayout; import android.widget.EditText; +import com.google.android.material.textfield.TextInputLayout; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -12,26 +13,24 @@ import org.mockito.Captor; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; -import io.github.hidroh.materialistic.test.TestRunner; -import org.robolectric.shadows.ShadowToast; import org.robolectric.android.controller.ActivityController; +import org.robolectric.shadows.ShadowToast; import javax.inject.Inject; import io.github.hidroh.materialistic.data.FeedbackClient; +import io.github.hidroh.materialistic.test.TestRunner; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static org.assertj.android.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.robolectric.Shadows.shadowOf; -@SuppressWarnings("ConstantConditions") @SuppressLint("SetTextI18n") @RunWith(TestRunner.class) public class FeedbackActivityTest { diff --git a/app/src/test/java/io/github/hidroh/materialistic/OfflineWebActivityTest.java b/app/src/test/java/io/github/hidroh/materialistic/OfflineWebActivityTest.java index 58127acfc..15ccee94e 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/OfflineWebActivityTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/OfflineWebActivityTest.java @@ -38,7 +38,6 @@ import static org.robolectric.Shadows.shadowOf; @Config(shadows = ShadowNestedScrollView.class) -@SuppressWarnings("ConstantConditions") @RunWith(TestRunner.class) public class OfflineWebActivityTest { private ActivityController controller; diff --git a/app/src/test/java/io/github/hidroh/materialistic/TestActivityModule.java b/app/src/test/java/io/github/hidroh/materialistic/TestActivityModule.java index c23220056..244fde573 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/TestActivityModule.java +++ b/app/src/test/java/io/github/hidroh/materialistic/TestActivityModule.java @@ -331,12 +331,7 @@ public PopupMenu setMenuItemTitle(@IdRes int itemResId, @StringRes int title) { @SuppressLint("NewApi") @Override public PopupMenu setOnMenuItemClickListener(final OnMenuItemClickListener listener) { - popupMenu.setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - return listener.onMenuItemClick(item); - } - }); + popupMenu.setOnMenuItemClickListener(listener::onMenuItemClick); return this; } diff --git a/app/src/test/java/io/github/hidroh/materialistic/UserActivityTest.java b/app/src/test/java/io/github/hidroh/materialistic/UserActivityTest.java index 1c6bd3d98..cfb9f20f3 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/UserActivityTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/UserActivityTest.java @@ -134,7 +134,7 @@ public void testFailed() { public void testScrollToTop() { verify(userManager).getUser(eq("username"), userCaptor.capture()); userCaptor.getValue().onResponse(user); - RecyclerView recyclerView = (RecyclerView) activity.findViewById(R.id.recycler_view); + RecyclerView recyclerView = activity.findViewById(R.id.recycler_view); recyclerView.smoothScrollToPosition(1); assertThat(customShadowOf(recyclerView).getScrollPosition()).isEqualTo(1); TabLayout.Tab tab = ((TabLayout) activity.findViewById(R.id.tab_layout)).getTabAt(0); @@ -181,7 +181,7 @@ public void testDeepLink() { public void testCommentBinding() { verify(userManager).getUser(eq("username"), userCaptor.capture()); userCaptor.getValue().onResponse(user); - RecyclerView recyclerView = (RecyclerView) activity.findViewById(R.id.recycler_view); + RecyclerView recyclerView = activity.findViewById(R.id.recycler_view); verify(itemManager).getItem(eq("1"), eq(ItemManager.MODE_DEFAULT), itemCaptor.capture()); @@ -211,7 +211,7 @@ public String getParent() { public void testStoryBinding() { verify(userManager).getUser(eq("username"), userCaptor.capture()); userCaptor.getValue().onResponse(user); - RecyclerView recyclerView = (RecyclerView) activity.findViewById(R.id.recycler_view); + RecyclerView recyclerView = activity.findViewById(R.id.recycler_view); verify(itemManager).getItem(eq("2"), eq(ItemManager.MODE_DEFAULT), itemCaptor.capture()); @@ -250,7 +250,7 @@ public int getScore() { public void testDeletedItemBinding() { verify(userManager).getUser(eq("username"), userCaptor.capture()); userCaptor.getValue().onResponse(user); - RecyclerView recyclerView = (RecyclerView) activity.findViewById(R.id.recycler_view); + RecyclerView recyclerView = activity.findViewById(R.id.recycler_view); verify(itemManager).getItem(eq("1"), eq(ItemManager.MODE_DEFAULT), itemCaptor.capture()); diff --git a/app/src/test/java/io/github/hidroh/materialistic/accounts/UserServicesClientTest.java b/app/src/test/java/io/github/hidroh/materialistic/accounts/UserServicesClientTest.java index e5c1a7e24..1be7d4a44 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/accounts/UserServicesClientTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/accounts/UserServicesClientTest.java @@ -80,7 +80,6 @@ public void testRegisterFailed() throws IOException { UserServices.Callback callback = mock(UserServices.Callback.class); userServices.login("username", "password", true, callback); verify(callback).onError(throwableCaptor.capture()); - //noinspection ThrowableResultOfMethodCallIgnored assertThat(throwableCaptor.getValue().getMessage()).contains("Message"); } diff --git a/app/src/test/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivityTest.java b/app/src/test/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivityTest.java index e89592e7c..675e2225b 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivityTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/appwidget/WidgetConfigActivityTest.java @@ -41,7 +41,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.robolectric.Shadows.shadowOf; -@SuppressWarnings("ConstantConditions") @Config(shadows = {ShadowPreferenceFragmentCompat.class}) @RunWith(TestRunner.class) public class WidgetConfigActivityTest { diff --git a/app/src/test/java/io/github/hidroh/materialistic/data/AlgoliaClientTest.java b/app/src/test/java/io/github/hidroh/materialistic/data/AlgoliaClientTest.java index ec8b58f7a..7c9c915cc 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/data/AlgoliaClientTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/data/AlgoliaClientTest.java @@ -83,7 +83,7 @@ public void testGetStoriesSuccess() { public void testGetStoriesSuccessSortByPopularity() { when(TestRestServiceFactory.algoliaRestService.searchRx(eq("filter"))) .thenReturn(Observable.error(new IOException())); - client.sSortByTime = false; + AlgoliaClient.sSortByTime = false; client.getStories("filter", ItemManager.MODE_DEFAULT, storiesListener); verify(TestRestServiceFactory.algoliaRestService).searchRx(eq("filter")); } diff --git a/app/src/test/java/io/github/hidroh/materialistic/data/HackerNewsItemTest.java b/app/src/test/java/io/github/hidroh/materialistic/data/HackerNewsItemTest.java index 75da8bced..f4c69725f 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/data/HackerNewsItemTest.java +++ b/app/src/test/java/io/github/hidroh/materialistic/data/HackerNewsItemTest.java @@ -22,7 +22,7 @@ public class HackerNewsItemTest { @Before public void setUp() { - item = new HackerNewsItem(1l); + item = new HackerNewsItem(1L); } @Test @@ -78,7 +78,7 @@ public String getRawUrl() { @Override public long[] getKids() { - return new long[]{1l}; + return new long[]{1L}; } @Override @@ -88,7 +88,7 @@ public String getBy() { @Override public long getTime() { - return 1234l; + return 1234L; } @Override @@ -210,7 +210,7 @@ public void testGetDisplayedTime() { item.populate(new TestItem() { @Override public long getTime() { - return 1429027200l; // Apr 15 2015 + return 1429027200L; // Apr 15 2015 } @Override @@ -303,7 +303,7 @@ public void testKidCountNoDescendants() { item.populate(new TestItem() { @Override public long[] getKids() { - return new long[]{1l, 2l}; + return new long[]{1L, 2L}; } }); assertEquals(2, item.getKidCount()); @@ -365,7 +365,7 @@ public void testGetKidItems() { item.populate(new TestItem() { @Override public long[] getKids() { - return new long[]{1l, 2l}; + return new long[]{1L, 2L}; } }); assertThat(item.getKidItems()).hasSize(2); @@ -429,8 +429,8 @@ public void testParcelable() { public void testEquals() { assertFalse(item.equals(null)); assertFalse(item.equals(new TestItem(){})); - assertFalse(item.equals(new HackerNewsItem(2l))); - assertTrue(item.equals(item)); - assertTrue(item.equals(new HackerNewsItem(1l))); + assertFalse(item.equals(new HackerNewsItem(2L))); + assertEquals(item, item); + assertTrue(item.equals(new HackerNewsItem(1L))); } } diff --git a/app/src/test/java/io/github/hidroh/materialistic/test/ListActivity.java b/app/src/test/java/io/github/hidroh/materialistic/test/ListActivity.java index bae099b84..6376f2aa3 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/test/ListActivity.java +++ b/app/src/test/java/io/github/hidroh/materialistic/test/ListActivity.java @@ -1,7 +1,6 @@ package io.github.hidroh.materialistic.test; import android.os.Bundle; -import androidx.appcompat.widget.Toolbar; import io.github.hidroh.materialistic.InjectableActivity; import io.github.hidroh.materialistic.MultiPaneListener; @@ -18,7 +17,7 @@ protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.AppTheme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); } @Override diff --git a/app/src/test/java/io/github/hidroh/materialistic/test/TestReadabilityActivity.java b/app/src/test/java/io/github/hidroh/materialistic/test/TestReadabilityActivity.java index e747051c0..feee6cfc0 100644 --- a/app/src/test/java/io/github/hidroh/materialistic/test/TestReadabilityActivity.java +++ b/app/src/test/java/io/github/hidroh/materialistic/test/TestReadabilityActivity.java @@ -1,7 +1,6 @@ package io.github.hidroh.materialistic.test; import android.os.Bundle; -import androidx.appcompat.widget.Toolbar; import io.github.hidroh.materialistic.InjectableActivity; import io.github.hidroh.materialistic.R; @@ -11,6 +10,6 @@ public class TestReadabilityActivity extends InjectableActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); + setSupportActionBar(findViewById(R.id.toolbar)); } } diff --git a/build.gradle b/build.gradle index edc3f0577..343150d04 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.21' + ext.kotlin_version = '1.3.61' repositories { maven { url 'https://maven.google.com' } diff --git a/docs/licenses.html b/docs/licenses.html index f8889b1c8..d62f57e8a 100644 --- a/docs/licenses.html +++ b/docs/licenses.html @@ -1,4 +1,3 @@ - diff --git a/docs/privacy.html b/docs/privacy.html index cb4642f3b..6aa6916cb 100644 --- a/docs/privacy.html +++ b/docs/privacy.html @@ -1,4 +1,3 @@ - diff --git a/gradle.properties b/gradle.properties index 168d32951..729e137a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,22 +1,17 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit +## For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - +# # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m +# Default value: -Xmx1024m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - +# # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -org.gradle.daemon=true +#Sat Dec 07 17:07:58 CET 2019 android.enableBuildCache=true -android.useAndroidX=true android.enableJetifier=true +android.useAndroidX=true +org.gradle.daemon=true