Upgrade to AndroidX, move to MaterialComponents theme (#953)

* upgrade to AndroidX, upgrade libraries

* move to MaterialComponents theme

* make sure the compose button looks good everywhere

* fix tollbar title/button alignment on tablet

* move to new material color theming, consolidate colors and themes

* fix build, fix imports

* set error on TextInputLayout instead of EditText

* fix imports, TootButton when

* improve snackbar style

* fix task description color
main
Konrad Pozniak 6 years ago committed by GitHub
parent 95d4fc3428
commit 0b60445256
  1. 60
      app/build.gradle
  2. 4
      app/src/androidTest/java/com/keylesspalace/tusky/ExampleInstrumentedTest.java
  3. 2
      app/src/main/AndroidManifest.xml
  4. 2
      app/src/main/java/com/keylesspalace/tusky/AboutActivity.kt
  5. 29
      app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt
  6. 12
      app/src/main/java/com/keylesspalace/tusky/AccountListActivity.java
  7. 26
      app/src/main/java/com/keylesspalace/tusky/BaseActivity.java
  8. 4
      app/src/main/java/com/keylesspalace/tusky/BottomSheetActivity.kt
  9. 44
      app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java
  10. 14
      app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt
  11. 6
      app/src/main/java/com/keylesspalace/tusky/EmojiPreference.java
  12. 10
      app/src/main/java/com/keylesspalace/tusky/FavouritesActivity.java
  13. 2
      app/src/main/java/com/keylesspalace/tusky/LicenseActivity.kt
  14. 8
      app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt
  15. 34
      app/src/main/java/com/keylesspalace/tusky/LoginActivity.kt
  16. 20
      app/src/main/java/com/keylesspalace/tusky/MainActivity.java
  17. 4
      app/src/main/java/com/keylesspalace/tusky/ModalTimelineActivity.kt
  18. 2
      app/src/main/java/com/keylesspalace/tusky/PreferencesActivity.kt
  19. 14
      app/src/main/java/com/keylesspalace/tusky/ReportActivity.java
  20. 14
      app/src/main/java/com/keylesspalace/tusky/SavedTootActivity.java
  21. 12
      app/src/main/java/com/keylesspalace/tusky/SearchActivity.java
  22. 2
      app/src/main/java/com/keylesspalace/tusky/SplashActivity.kt
  23. 4
      app/src/main/java/com/keylesspalace/tusky/TuskyApplication.java
  24. 8
      app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
  25. 10
      app/src/main/java/com/keylesspalace/tusky/ViewTagActivity.java
  26. 10
      app/src/main/java/com/keylesspalace/tusky/ViewThreadActivity.java
  27. 6
      app/src/main/java/com/keylesspalace/tusky/adapter/AccountAdapter.java
  28. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/AccountFieldAdapter.kt
  29. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/AccountFieldEditAdapter.kt
  30. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/AccountViewHolder.java
  31. 4
      app/src/main/java/com/keylesspalace/tusky/adapter/BlocksAdapter.java
  32. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/EmojiAdapter.kt
  33. 4
      app/src/main/java/com/keylesspalace/tusky/adapter/FollowAdapter.java
  34. 4
      app/src/main/java/com/keylesspalace/tusky/adapter/FollowRequestsAdapter.java
  35. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/LoadingFooterViewHolder.kt
  36. 6
      app/src/main/java/com/keylesspalace/tusky/adapter/MentionAutoCompleteAdapter.java
  37. 4
      app/src/main/java/com/keylesspalace/tusky/adapter/MutesAdapter.java
  38. 14
      app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
  39. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/PlaceholderViewHolder.java
  40. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/ReportAdapter.java
  41. 4
      app/src/main/java/com/keylesspalace/tusky/adapter/SavedTootAdapter.java
  42. 6
      app/src/main/java/com/keylesspalace/tusky/adapter/SearchResultsAdapter.java
  43. 10
      app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
  44. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/StatusDetailedViewHolder.java
  45. 2
      app/src/main/java/com/keylesspalace/tusky/adapter/StatusViewHolder.java
  46. 6
      app/src/main/java/com/keylesspalace/tusky/adapter/ThreadAdapter.java
  47. 4
      app/src/main/java/com/keylesspalace/tusky/adapter/TimelineAdapter.java
  48. 2
      app/src/main/java/com/keylesspalace/tusky/db/AccountDao.kt
  49. 8
      app/src/main/java/com/keylesspalace/tusky/db/AccountEntity.kt
  50. 10
      app/src/main/java/com/keylesspalace/tusky/db/AppDatabase.java
  51. 2
      app/src/main/java/com/keylesspalace/tusky/db/Converters.kt
  52. 8
      app/src/main/java/com/keylesspalace/tusky/db/InstanceDao.kt
  53. 6
      app/src/main/java/com/keylesspalace/tusky/db/InstanceEntity.kt
  54. 8
      app/src/main/java/com/keylesspalace/tusky/db/TootDao.java
  55. 12
      app/src/main/java/com/keylesspalace/tusky/db/TootEntity.java
  56. 6
      app/src/main/java/com/keylesspalace/tusky/di/AppInjector.kt
  57. 2
      app/src/main/java/com/keylesspalace/tusky/di/AppModule.kt
  58. 4
      app/src/main/java/com/keylesspalace/tusky/di/ViewModelFactory.kt
  59. 12
      app/src/main/java/com/keylesspalace/tusky/fragment/AccountListFragment.java
  60. 17
      app/src/main/java/com/keylesspalace/tusky/fragment/AccountMediaFragment.kt
  61. 4
      app/src/main/java/com/keylesspalace/tusky/fragment/BaseFragment.java
  62. 28
      app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java
  63. 12
      app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java
  64. 4
      app/src/main/java/com/keylesspalace/tusky/fragment/SearchFragment.kt
  65. 36
      app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java
  66. 3
      app/src/main/java/com/keylesspalace/tusky/fragment/ViewImageFragment.kt
  67. 28
      app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java
  68. 10
      app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt
  69. 6
      app/src/main/java/com/keylesspalace/tusky/fragment/preference/NotificationPreferencesFragment.kt
  70. 2
      app/src/main/java/com/keylesspalace/tusky/fragment/preference/PreferencesFragment.kt
  71. 4
      app/src/main/java/com/keylesspalace/tusky/fragment/preference/ProxyPreferencesFragment.kt
  72. 4
      app/src/main/java/com/keylesspalace/tusky/fragment/preference/TabFilterPreferencesFragment.kt
  73. 4
      app/src/main/java/com/keylesspalace/tusky/interfaces/ActionButtonActivity.java
  74. 2
      app/src/main/java/com/keylesspalace/tusky/network/InstanceSwitchAuthInterceptor.java
  75. 2
      app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.java
  76. 2
      app/src/main/java/com/keylesspalace/tusky/network/ProgressRequestBody.java
  77. 6
      app/src/main/java/com/keylesspalace/tusky/pager/AccountPagerAdapter.java
  78. 11
      app/src/main/java/com/keylesspalace/tusky/pager/AvatarImagePagerAdapter.kt
  79. 17
      app/src/main/java/com/keylesspalace/tusky/pager/ImagePagerAdapter.kt
  80. 6
      app/src/main/java/com/keylesspalace/tusky/pager/TimelinePagerAdapter.java
  81. 12
      app/src/main/java/com/keylesspalace/tusky/receiver/SendStatusBroadcastReceiver.kt
  82. 12
      app/src/main/java/com/keylesspalace/tusky/service/SendTootService.kt
  83. 2
      app/src/main/java/com/keylesspalace/tusky/util/CollectionUtil.java
  84. 4
      app/src/main/java/com/keylesspalace/tusky/util/CustomEmojiHelper.java
  85. 4
      app/src/main/java/com/keylesspalace/tusky/util/Either.java
  86. 2
      app/src/main/java/com/keylesspalace/tusky/util/EmojiCompatFont.java
  87. 2
      app/src/main/java/com/keylesspalace/tusky/util/HttpHeaderLink.java
  88. 2
      app/src/main/java/com/keylesspalace/tusky/util/IOUtils.java
  89. 4
      app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java
  90. 2
      app/src/main/java/com/keylesspalace/tusky/util/ListUtils.java
  91. 4
      app/src/main/java/com/keylesspalace/tusky/util/MediaUtils.kt
  92. 18
      app/src/main/java/com/keylesspalace/tusky/util/NotificationHelper.java
  93. 4
      app/src/main/java/com/keylesspalace/tusky/util/NotificationPullJobCreator.java
  94. 2
      app/src/main/java/com/keylesspalace/tusky/util/OkHttpUtils.java
  95. 2
      app/src/main/java/com/keylesspalace/tusky/util/PairedList.java
  96. 2
      app/src/main/java/com/keylesspalace/tusky/util/ResourcesUtils.java
  97. 6
      app/src/main/java/com/keylesspalace/tusky/util/SaveTootHelper.java
  98. 12
      app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.java
  99. 2
      app/src/main/java/com/keylesspalace/tusky/util/ViewDataUtils.java
  100. 2
      app/src/main/java/com/keylesspalace/tusky/view/ConversationLineItemDecoration.kt
  101. Some files were not shown because too many files have changed in this diff Show More

@ -20,7 +20,7 @@ android {
targetSdkVersion 28
versionCode 52
versionName "4.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
@ -58,46 +58,44 @@ android {
}
}
ext.supportLibraryVersion = '28.0.0'
ext.daggerVersion = '2.19'
// if libraries are changed here, they should also be changed in LicenseActivity
dependencies {
implementation('com.mikepenz:materialdrawer:6.0.9@aar') {
implementation('com.mikepenz:materialdrawer:6.1.1@aar') {
transitive = true
}
implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
implementation "com.android.support:customtabs:$supportLibraryVersion"
implementation "com.android.support:recyclerview-v7:$supportLibraryVersion"
implementation "com.android.support:support-v13:$supportLibraryVersion"
implementation "com.android.support:design:$supportLibraryVersion"
implementation "com.android.support:exifinterface:$supportLibraryVersion"
implementation "com.android.support:cardview-v7:$supportLibraryVersion"
implementation "com.android.support:preference-v7:$supportLibraryVersion"
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.browser:browser:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha01'
implementation 'androidx.exifinterface:exifinterface:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.preference:preference:1.1.0-alpha01'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'
implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
implementation 'com.github.connyduck:sparkbutton:1.0.1'
implementation 'com.github.chrisbanes:PhotoView:2.1.4'
implementation 'com.mikepenz:google-material-typeface:3.0.1.2.original@aar'
implementation('com.theartofdev.edmodo:android-image-cropper:2.7.0') {
implementation 'com.github.connyduck:sparkbutton:2.0.0'
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'com.mikepenz:google-material-typeface:3.0.1.3.original@aar'
implementation('com.theartofdev.edmodo:android-image-cropper:2.8.0') {
exclude group: 'com.android.support'
}
implementation 'com.evernote:android-job:1.2.6'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// EmojiCompat
implementation "com.android.support:support-emoji:$supportLibraryVersion"
implementation "com.android.support:support-emoji-appcompat:$supportLibraryVersion"
implementation 'androidx.emoji:emoji:1.0.0'
implementation 'androidx.emoji:emoji-appcompat:1.0.0'
implementation 'de.c1710:filemojicompat:1.0.14'
// architecture components
implementation 'android.arch.lifecycle:extensions:1.1.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
//room
implementation 'android.arch.persistence.room:runtime:1.1.1'
kapt 'android.arch.persistence.room:compiler:1.1.1'
implementation 'androidx.room:room-runtime:2.0.0'
kapt 'androidx.room:room-compiler:2.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
implementation "com.google.dagger:dagger:$daggerVersion"
@ -107,14 +105,14 @@ dependencies {
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"
testImplementation 'org.robolectric:robolectric:4.0.2'
testImplementation 'org.mockito:mockito-inline:2.23.0'
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
debugImplementation 'im.dino:dbinspector:3.4.1@aar'
implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'com.uber.autodispose:autodispose-android-archcomponents:1.0.0-RC3'
implementation 'com.uber.autodispose:autodispose-ktx:1.0.0-RC3'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
implementation 'com.uber.autodispose:autodispose-android-archcomponents:1.0.0'
implementation 'com.uber.autodispose:autodispose-ktx:1.0.0'
}

@ -1,8 +1,8 @@
package com.keylesspalace.tusky;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;

@ -131,7 +131,7 @@
<service android:name=".service.SendTootService" />
<provider
android:name="android.support.v4.content.FileProvider"
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">

@ -2,7 +2,7 @@ package com.keylesspalace.tusky
import android.content.Intent
import android.os.Bundle
import android.support.annotation.StringRes
import androidx.annotation.StringRes
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.method.LinkMovementMethod

@ -16,28 +16,31 @@
package com.keylesspalace.tusky
import android.animation.ArgbEvaluator
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.graphics.PorterDuff
import android.os.Bundle
import android.preference.PreferenceManager
import android.support.annotation.AttrRes
import android.support.annotation.ColorInt
import android.support.annotation.Px
import android.support.design.widget.*
import android.support.text.emoji.EmojiCompat
import android.support.v4.app.ActivityOptionsCompat
import android.support.v4.app.Fragment
import android.support.v4.content.ContextCompat
import android.support.v7.app.AlertDialog
import android.support.v7.widget.LinearLayoutManager
import androidx.annotation.AttrRes
import androidx.annotation.ColorInt
import androidx.annotation.Px
import androidx.emoji.text.EmojiCompat
import androidx.core.app.ActivityOptionsCompat
import androidx.fragment.app.Fragment
import androidx.core.content.ContextCompat
import androidx.appcompat.app.AlertDialog
import androidx.recyclerview.widget.LinearLayoutManager
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.CollapsingToolbarLayout
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import com.keylesspalace.tusky.adapter.AccountFieldAdapter
import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.entity.Account
@ -59,7 +62,7 @@ import javax.inject.Inject
class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasSupportFragmentInjector, LinkListener {
@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<androidx.fragment.app.Fragment>
@Inject
lateinit var viewModelFactory: ViewModelFactory

@ -18,12 +18,12 @@ package com.keylesspalace.tusky;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuItem;
import com.keylesspalace.tusky.fragment.AccountListFragment;

@ -15,22 +15,22 @@
package com.keylesspalace.tusky;
import android.app.ActivityManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.util.TypedValue;
import android.view.Menu;
import android.view.View;
import com.google.android.material.snackbar.Snackbar;
import com.keylesspalace.tusky.db.AccountEntity;
import com.keylesspalace.tusky.db.AccountManager;
import com.keylesspalace.tusky.di.Injectable;
@ -41,6 +41,9 @@ import java.util.List;
import javax.inject.Inject;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import retrofit2.Call;
public abstract class BaseActivity extends AppCompatActivity implements Injectable {
@ -68,6 +71,13 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab
}
ThemeUtils.setAppNightMode(theme, this);
/* set the taskdescription programmatically, the theme would turn it blue */
String appName = getString(R.string.app_name);
Bitmap appIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
int recentsBackgroundColor = ThemeUtils.getColor(this, R.attr.recents_background_color);
setTaskDescription(new ActivityManager.TaskDescription(appName, appIcon, recentsBackgroundColor));
long accountId = getIntent().getLongExtra("account", -1);
if (accountId != -1) {
accountManager.setActiveAccount(accountId);
@ -76,11 +86,17 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab
int style = textStyle(preferences.getString("statusTextSize", "medium"));
getTheme().applyStyle(style, false);
redirectIfNotLoggedIn();
if(requiresLogin()) {
redirectIfNotLoggedIn();
}
callList = new ArrayList<>();
}
protected boolean requiresLogin() {
return true;
}
private int textStyle(String name) {
int style;
switch (name) {

@ -17,8 +17,8 @@ package com.keylesspalace.tusky
import android.content.Intent
import android.os.Bundle
import android.support.annotation.VisibleForTesting
import android.support.design.widget.BottomSheetBehavior
import androidx.annotation.VisibleForTesting
import com.google.android.material.bottomsheet.BottomSheetBehavior
import android.view.View
import android.widget.LinearLayout
import com.keylesspalace.tusky.entity.SearchResults

@ -18,7 +18,7 @@ package com.keylesspalace.tusky;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.arch.lifecycle.Lifecycle;
import androidx.lifecycle.Lifecycle;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
@ -39,25 +39,25 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.Px;
import android.support.annotation.StringRes;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.Snackbar;
import android.support.transition.TransitionManager;
import android.support.v13.view.inputmethod.InputConnectionCompat;
import android.support.v13.view.inputmethod.InputContentInfoCompat;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.FileProvider;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.annotation.StringRes;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.snackbar.Snackbar;
import androidx.transition.TransitionManager;
import androidx.core.view.inputmethod.InputConnectionCompat;
import androidx.core.view.inputmethod.InputContentInfoCompat;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
@ -692,7 +692,7 @@ public final class ComposeActivity
color = ContextCompat.getColor(this, R.color.compose_media_visible_button_disabled_blue);
} else {
hideMediaToggle.setClickable(true);
color = ContextCompat.getColor(this, R.color.primary);
color = ContextCompat.getColor(this, R.color.tusky_blue);
}
} else {
hideMediaToggle.setClickable(true);
@ -1452,7 +1452,7 @@ public final class ComposeActivity
if (show) {
statusMarkSensitive = true;
contentWarningBar.setVisibility(View.VISIBLE);
contentWarningButton.setTextColor(ContextCompat.getColor(this, R.color.primary));
contentWarningButton.setTextColor(ContextCompat.getColor(this, R.color.tusky_blue));
contentWarningEditor.setSelection(contentWarningEditor.getText().length());
contentWarningEditor.requestFocus();
} else {

@ -17,19 +17,19 @@ package com.keylesspalace.tusky
import android.Manifest
import android.app.Activity
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import android.view.Menu
import android.view.MenuItem
import android.view.View

@ -1,14 +1,14 @@
package com.keylesspalace.tusky;
import android.app.AlarmManager;
import android.support.v7.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;

@ -16,11 +16,11 @@
package com.keylesspalace.tusky;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuItem;
import com.keylesspalace.tusky.fragment.TimelineFragment;

@ -16,7 +16,7 @@
package com.keylesspalace.tusky
import android.os.Bundle
import android.support.annotation.RawRes
import androidx.annotation.RawRes
import android.util.Log
import android.view.MenuItem
import android.widget.TextView

@ -3,10 +3,10 @@ package com.keylesspalace.tusky
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v7.widget.DividerItemDecoration
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.Toolbar
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.appcompat.widget.Toolbar
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View

@ -22,16 +22,13 @@ import android.content.Intent
import android.content.SharedPreferences
import android.net.Uri
import android.os.Bundle
import android.preference.PreferenceManager
import android.support.customtabs.CustomTabsIntent
import android.support.v7.app.AppCompatActivity
import androidx.browser.customtabs.CustomTabsIntent
import android.text.method.LinkMovementMethod
import android.util.Log
import android.view.MenuItem
import android.view.View
import android.widget.EditText
import android.widget.TextView
import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.entity.AccessToken
import com.keylesspalace.tusky.entity.AppCredentials
@ -46,12 +43,10 @@ import retrofit2.Response
import javax.inject.Inject
class LoginActivity : AppCompatActivity(), Injectable {
class LoginActivity : BaseActivity(), Injectable {
@Inject
lateinit var mastodonApi: MastodonApi
@Inject
lateinit var accountManager: AccountManager
private lateinit var preferences: SharedPreferences
private var domain: String = ""
@ -68,13 +63,6 @@ class LoginActivity : AppCompatActivity(), Injectable {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
preferences = PreferenceManager.getDefaultSharedPreferences(this)
val theme = preferences.getString("appTheme", ThemeUtils.APP_THEME_DEFAULT)
if (theme == "black") {
setTheme(R.style.TuskyBlackTheme)
}
ThemeUtils.setAppNightMode(theme, this)
setContentView(R.layout.activity_login)
if (savedInstanceState != null) {
@ -107,6 +95,10 @@ class LoginActivity : AppCompatActivity(), Injectable {
}
override fun requiresLogin(): Boolean {
return false
}
override fun finish() {
super.finish()
if(isAdditionalLogin()) {
@ -144,7 +136,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
HttpUrl.Builder().host(domain).scheme("https").build()
} catch (e: IllegalArgumentException) {
setLoading(false)
domainEditText.error = getString(R.string.error_invalid_domain)
domainTextInputLayout.error = getString(R.string.error_invalid_domain)
return
}
@ -153,7 +145,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
response: Response<AppCredentials>) {
if (!response.isSuccessful) {
loginButton.isEnabled = true
domainEditText.error = getString(R.string.error_failed_app_registration)
domainTextInputLayout.error = getString(R.string.error_failed_app_registration)
setLoading(false)
Log.e(TAG, "App authentication failed. " + response.message())
return
@ -167,7 +159,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
override fun onFailure(call: Call<AppCredentials>, t: Throwable) {
loginButton.isEnabled = true
domainEditText.error = getString(R.string.error_failed_app_registration)
domainTextInputLayout.error = getString(R.string.error_failed_app_registration)
setLoading(false)
Log.e(TAG, Log.getStackTraceString(t))
}
@ -243,7 +235,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
onLoginSuccess(response.body()!!.accessToken)
} else {
setLoading(false)
domainEditText.error = getString(R.string.error_retrieving_oauth_token)
domainTextInputLayout.error = getString(R.string.error_retrieving_oauth_token)
Log.e(TAG, String.format("%s %s",
getString(R.string.error_retrieving_oauth_token),
response.message()))
@ -252,7 +244,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
override fun onFailure(call: Call<AccessToken>, t: Throwable) {
setLoading(false)
domainEditText.error = getString(R.string.error_retrieving_oauth_token)
domainTextInputLayout.error = getString(R.string.error_retrieving_oauth_token)
Log.e(TAG, String.format("%s %s",
getString(R.string.error_retrieving_oauth_token),
t.message))
@ -265,14 +257,14 @@ class LoginActivity : AppCompatActivity(), Injectable {
/* Authorization failed. Put the error response where the user can read it and they
* can try again. */
setLoading(false)
domainEditText.error = getString(R.string.error_authorization_denied)
domainTextInputLayout.error = getString(R.string.error_authorization_denied)
Log.e(TAG, String.format("%s %s",
getString(R.string.error_authorization_denied),
error))
} else {
// This case means a junk response was received somehow.
setLoading(false)
domainEditText.error = getString(R.string.error_authorization_unknown)
domainTextInputLayout.error = getString(R.string.error_authorization_unknown)
}
} else {
// first show or user cancelled login

@ -15,22 +15,22 @@
package com.keylesspalace.tusky;
import android.arch.lifecycle.Lifecycle;
import androidx.lifecycle.Lifecycle;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import androidx.emoji.text.EmojiCompat;
import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AlertDialog;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
import android.support.text.emoji.EmojiCompat;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.ImageButton;

@ -3,8 +3,8 @@ package com.keylesspalace.tusky
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.v4.app.Fragment
import com.google.android.material.floatingactionbutton.FloatingActionButton
import androidx.fragment.app.Fragment
import android.view.MenuItem
import com.keylesspalace.tusky.fragment.TimelineFragment
import com.keylesspalace.tusky.interfaces.ActionButtonActivity

@ -20,7 +20,7 @@ import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.preference.PreferenceManager
import android.support.v4.app.Fragment
import androidx.fragment.app.Fragment
import android.util.Log
import android.view.MenuItem
import com.keylesspalace.tusky.appstore.EventHub

@ -18,13 +18,13 @@ package com.keylesspalace.tusky;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import androidx.annotation.Nullable;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.ActionBar;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

@ -15,17 +15,17 @@
package com.keylesspalace.tusky;
import android.arch.lifecycle.Lifecycle;
import androidx.lifecycle.Lifecycle;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

@ -20,12 +20,12 @@ import android.app.SearchableInfo;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

@ -17,7 +17,7 @@ package com.keylesspalace.tusky
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import androidx.appcompat.app.AppCompatActivity
import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.di.Injectable

@ -18,10 +18,10 @@ package com.keylesspalace.tusky;
import android.app.Activity;
import android.app.Application;
import android.app.Service;
import android.arch.persistence.room.Room;
import androidx.room.Room;
import android.content.BroadcastReceiver;
import android.preference.PreferenceManager;
import android.support.text.emoji.EmojiCompat;
import androidx.emoji.text.EmojiCompat;
import com.evernote.android.job.JobManager;
import com.jakewharton.picasso.OkHttp3Downloader;

@ -31,10 +31,10 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v4.content.FileProvider
import android.support.v4.view.ViewPager
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.viewpager.widget.ViewPager
import android.util.Log
import android.view.Menu
import android.view.MenuItem

@ -16,11 +16,11 @@
package com.keylesspalace.tusky;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuItem;
import com.keylesspalace.tusky.fragment.TimelineFragment;

@ -18,11 +18,11 @@ package com.keylesspalace.tusky;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

@ -15,9 +15,9 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.keylesspalace.tusky.entity.Account;
import com.keylesspalace.tusky.interfaces.AccountActionListener;

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.adapter
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.ViewGroup
import android.view.View

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.adapter
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater

@ -1,7 +1,7 @@
package com.keylesspalace.tusky.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

@ -15,8 +15,8 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.adapter
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.ImageView

@ -15,8 +15,8 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -15,8 +15,8 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.adapter
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.view.View
class LoadingFooterViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)

@ -16,9 +16,9 @@
package com.keylesspalace.tusky.adapter;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -1,7 +1,7 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -20,11 +20,11 @@ import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v4.text.BidiFormatter;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.core.text.BidiFormatter;
import androidx.recyclerview.widget.RecyclerView;
import android.text.InputFilter;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
@ -427,7 +427,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
icon = ContextCompat.getDrawable(context, R.drawable.ic_star_24dp);
if (icon != null) {
icon.setColorFilter(ContextCompat.getColor(context,
R.color.status_favourite_button_marked_dark), PorterDuff.Mode.SRC_ATOP);
R.color.tusky_orange), PorterDuff.Mode.SRC_ATOP);
}
format = context.getString(R.string.notification_favourite_format);
@ -437,7 +437,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
icon = ContextCompat.getDrawable(context, R.drawable.ic_repeat_24dp);
if (icon != null) {
icon.setColorFilter(ContextCompat.getColor(context,
R.color.color_accent_dark), PorterDuff.Mode.SRC_ATOP);
R.color.tusky_blue), PorterDuff.Mode.SRC_ATOP);
}
format = context.getString(R.string.notification_reblog_format);

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.adapter;
import android.support.v7.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.adapter;
import android.support.v7.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;
import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;

@ -16,8 +16,8 @@
package com.keylesspalace.tusky.adapter;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -15,9 +15,9 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -2,11 +2,11 @@ package com.keylesspalace.tusky.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.recyclerview.widget.RecyclerView;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextUtils;

@ -4,7 +4,7 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import androidx.annotation.Nullable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;

@ -16,7 +16,7 @@
package com.keylesspalace.tusky.adapter;
import android.content.Context;
import android.support.annotation.Nullable;
import androidx.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

@ -15,9 +15,9 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -15,8 +15,8 @@
package com.keylesspalace.tusky.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@ -15,7 +15,7 @@
package com.keylesspalace.tusky.db
import android.arch.persistence.room.*
import androidx.room.*
@Dao
interface AccountDao {

@ -15,10 +15,10 @@
package com.keylesspalace.tusky.db
import android.arch.persistence.room.Entity
import android.arch.persistence.room.Index
import android.arch.persistence.room.PrimaryKey
import android.arch.persistence.room.TypeConverters
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
import androidx.room.TypeConverters
import com.keylesspalace.tusky.entity.Emoji
import com.keylesspalace.tusky.entity.Status

@ -15,11 +15,11 @@
package com.keylesspalace.tusky.db;