diff --git a/app/build.gradle b/app/build.gradle index 56ad35bf..be16906b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,8 +24,8 @@ android { applicationId "com.h.pixeldroid" minSdkVersion 23 targetSdkVersion 30 - versionCode 7 - versionName "1.0.alpha6" + versionCode 8 + versionName "1.0.alpha7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunnerArguments clearPackageData: 'true' diff --git a/app/src/androidTest/java/com/h/pixeldroid/CameraTest.kt b/app/src/androidTest/java/com/h/pixeldroid/CameraTest.kt index c2e53180..e5ca9d0f 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/CameraTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/CameraTest.kt @@ -9,9 +9,9 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.espresso.intent.Intents import androidx.test.espresso.intent.matcher.IntentMatchers import androidx.test.rule.GrantPermissionRule -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.fragments.CameraFragment +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.postCreation.camera.CameraFragment import com.h.pixeldroid.testUtility.clearData import com.h.pixeldroid.testUtility.initDB import kotlinx.android.synthetic.main.camera_ui_container.* diff --git a/app/src/androidTest/java/com/h/pixeldroid/DrawerMenuTest.kt b/app/src/androidTest/java/com/h/pixeldroid/DrawerMenuTest.kt index 150b590a..dde1f96c 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/DrawerMenuTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/DrawerMenuTest.kt @@ -12,9 +12,9 @@ import androidx.test.espresso.matcher.ViewMatchers.* import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import androidx.test.uiautomator.UiDevice -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity import com.h.pixeldroid.testUtility.MockServer import com.h.pixeldroid.testUtility.clearData import com.h.pixeldroid.testUtility.initDB diff --git a/app/src/androidTest/java/com/h/pixeldroid/EditPhotoTest.kt b/app/src/androidTest/java/com/h/pixeldroid/EditPhotoTest.kt index 0cde48c0..356cbd3b 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/EditPhotoTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/EditPhotoTest.kt @@ -23,6 +23,7 @@ import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.GrantPermissionRule import com.google.android.material.tabs.TabLayout import com.h.pixeldroid.adapters.ThumbnailAdapter +import com.h.pixeldroid.settings.AboutActivity import com.h.pixeldroid.testUtility.CustomMatchers import com.h.pixeldroid.testUtility.clearData import junit.framework.Assert.assertTrue diff --git a/app/src/androidTest/java/com/h/pixeldroid/HomeFeedTest.kt b/app/src/androidTest/java/com/h/pixeldroid/HomeFeedTest.kt index c4b49076..e1ca7855 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/HomeFeedTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/HomeFeedTest.kt @@ -11,10 +11,10 @@ import androidx.test.espresso.contrib.RecyclerViewActions.scrollToPosition import androidx.test.espresso.matcher.ViewMatchers.* import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.android.material.tabs.TabLayout -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.fragments.StatusViewHolder +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.posts.StatusViewHolder import com.h.pixeldroid.testUtility.CustomMatchers.Companion.atPosition import com.h.pixeldroid.testUtility.CustomMatchers.Companion.clickChildViewWithId import com.h.pixeldroid.testUtility.CustomMatchers.Companion.first diff --git a/app/src/androidTest/java/com/h/pixeldroid/IntentTest.kt b/app/src/androidTest/java/com/h/pixeldroid/IntentTest.kt index 87fe9641..fc1a9226 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/IntentTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/IntentTest.kt @@ -23,12 +23,13 @@ import androidx.test.espresso.intent.matcher.IntentMatchers import androidx.test.espresso.matcher.ViewMatchers import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.rule.ActivityTestRule -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.fragments.StatusViewHolder -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_TAG +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.posts.StatusViewHolder +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Account.Companion.ACCOUNT_TAG +import com.h.pixeldroid.settings.AboutActivity import com.h.pixeldroid.testUtility.MockServer import com.h.pixeldroid.testUtility.clearData import com.h.pixeldroid.testUtility.initDB diff --git a/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOfflineTest.kt b/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOfflineTest.kt index 9f1dc4d2..2e976997 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOfflineTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOfflineTest.kt @@ -1,27 +1,5 @@ package com.h.pixeldroid -import android.content.Context -import androidx.test.core.app.ActivityScenario -import androidx.test.core.app.ApplicationProvider -import androidx.test.espresso.Espresso.onView -import androidx.test.espresso.action.ViewActions.click -import androidx.test.espresso.assertion.ViewAssertions.matches -import androidx.test.espresso.matcher.ViewMatchers.isDisplayed -import androidx.test.espresso.matcher.ViewMatchers.withId -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation -import androidx.test.uiautomator.UiDevice -import androidx.test.uiautomator.UiSelector -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.testUtility.clearData -import com.h.pixeldroid.testUtility.initDB -import org.junit.After -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.junit.rules.Timeout -import org.junit.runner.RunWith - /* @RunWith(AndroidJUnit4::class) class LoginActivityOfflineTest { diff --git a/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOnlineTest.kt b/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOnlineTest.kt index bafffc8a..35ece520 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOnlineTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/LoginActivityOnlineTest.kt @@ -16,9 +16,9 @@ import androidx.test.espresso.matcher.ViewMatchers.hasErrorText import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity import com.h.pixeldroid.testUtility.MockServer import com.h.pixeldroid.testUtility.clearData import com.h.pixeldroid.testUtility.initDB diff --git a/app/src/androidTest/java/com/h/pixeldroid/PostCreationFragmentTest.kt b/app/src/androidTest/java/com/h/pixeldroid/PostCreationFragmentTest.kt index 82e73224..4dea5921 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/PostCreationFragmentTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/PostCreationFragmentTest.kt @@ -16,9 +16,9 @@ import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.GrantPermissionRule -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity import com.h.pixeldroid.testUtility.MockServer import com.h.pixeldroid.testUtility.clearData import com.h.pixeldroid.testUtility.initDB diff --git a/app/src/androidTest/java/com/h/pixeldroid/PostTest.kt b/app/src/androidTest/java/com/h/pixeldroid/PostTest.kt index 8289fc7c..1086efc5 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/PostTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/PostTest.kt @@ -13,10 +13,11 @@ import androidx.test.espresso.matcher.ViewMatchers.* import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.objects.* +import com.h.pixeldroid.posts.PostActivity +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.api.objects.* import com.h.pixeldroid.testUtility.MockServer import com.h.pixeldroid.testUtility.clearData import com.h.pixeldroid.testUtility.initDB diff --git a/app/src/androidTest/java/com/h/pixeldroid/testUtility/DbHelpers.kt b/app/src/androidTest/java/com/h/pixeldroid/testUtility/DbHelpers.kt index 8788316d..57d84765 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/testUtility/DbHelpers.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/testUtility/DbHelpers.kt @@ -2,7 +2,7 @@ package com.h.pixeldroid.testUtility import android.content.Context import androidx.room.Room -import com.h.pixeldroid.db.AppDatabase +import com.h.pixeldroid.utils.db.AppDatabase import org.ligi.tracedroid.TraceDroid diff --git a/app/src/androidTest/java/com/h/pixeldroid/testUtility/JsonValues.kt b/app/src/androidTest/java/com/h/pixeldroid/testUtility/JsonValues.kt index 731bb1fe..ecfb5368 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/testUtility/JsonValues.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/testUtility/JsonValues.kt @@ -1,7 +1,7 @@ package com.h.pixeldroid.testUtility import com.google.gson.Gson -import com.h.pixeldroid.objects.Application +import com.h.pixeldroid.utils.api.objects.Application class JsonValues { companion object { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2c6d8ed9..c1eb1ea0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ - + - + @@ -105,13 +105,13 @@ android:resource="@xml/searchable" /> diff --git a/app/src/main/java/com/h/pixeldroid/LoginActivity.kt b/app/src/main/java/com/h/pixeldroid/LoginActivity.kt index f87a05cc..1e33af91 100644 --- a/app/src/main/java/com/h/pixeldroid/LoginActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/LoginActivity.kt @@ -11,11 +11,13 @@ import android.util.Log import android.view.View import android.view.inputmethod.InputMethodManager import androidx.browser.customtabs.CustomTabsIntent -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.objects.* -import com.h.pixeldroid.utils.DBUtils -import com.h.pixeldroid.utils.Utils -import com.h.pixeldroid.utils.Utils.Companion.normalizeDomain +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.db.addUser +import com.h.pixeldroid.utils.db.storeInstance +import com.h.pixeldroid.utils.api.objects.* +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.utils.hasInternet +import com.h.pixeldroid.utils.normalizeDomain import io.reactivex.Single import io.reactivex.SingleObserver import io.reactivex.android.schedulers.AndroidSchedulers @@ -67,7 +69,7 @@ class LoginActivity : BaseActivity() { oauthScheme = getString(R.string.auth_scheme) preferences = getSharedPreferences("$PACKAGE_ID.pref", Context.MODE_PRIVATE) - if (Utils.hasInternet(applicationContext)) { + if (hasInternet(applicationContext)) { connect_instance_button.setOnClickListener { registerAppToServer(normalizeDomain(editText.text.toString())) } @@ -269,7 +271,7 @@ class LoginActivity : BaseActivity() { return failedRegistration(getString(R.string.instance_error)) } - DBUtils.storeInstance(db, instance) + storeInstance(db, instance) storeUser(token.access_token, token.refresh_token, clientId, clientSecret, instance.uri) wipeSharedSettings() } @@ -311,7 +313,7 @@ class LoginActivity : BaseActivity() { if (response.body() != null && response.isSuccessful) { db.userDao().deActivateActiveUsers() val user = response.body() as Account - DBUtils.addUser( + addUser( db, user, instance, diff --git a/app/src/main/java/com/h/pixeldroid/MainActivity.kt b/app/src/main/java/com/h/pixeldroid/MainActivity.kt index 01c05d2d..cd71db9a 100644 --- a/app/src/main/java/com/h/pixeldroid/MainActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/MainActivity.kt @@ -16,16 +16,19 @@ import androidx.paging.ExperimentalPagingApi import androidx.viewpager2.adapter.FragmentStateAdapter import com.bumptech.glide.Glide import com.google.android.material.tabs.TabLayoutMediator -import com.h.pixeldroid.db.entities.HomeStatusDatabaseEntity -import com.h.pixeldroid.db.entities.PublicFeedStatusDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.fragments.CameraFragment -import com.h.pixeldroid.fragments.SearchDiscoverFragment -import com.h.pixeldroid.fragments.feeds.cachedFeeds.notifications.NotificationsFragment -import com.h.pixeldroid.fragments.feeds.cachedFeeds.postFeeds.PostFeedFragment -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.utils.DBUtils -import com.h.pixeldroid.utils.Utils.Companion.hasInternet +import com.h.pixeldroid.utils.db.addUser +import com.h.pixeldroid.postCreation.camera.CameraFragment +import com.h.pixeldroid.utils.db.entities.HomeStatusDatabaseEntity +import com.h.pixeldroid.utils.db.entities.PublicFeedStatusDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.posts.feeds.cachedFeeds.notifications.NotificationsFragment +import com.h.pixeldroid.posts.feeds.cachedFeeds.postFeeds.PostFeedFragment +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.profile.ProfileActivity +import com.h.pixeldroid.searchDiscover.SearchDiscoverFragment +import com.h.pixeldroid.settings.SettingsActivity +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.utils.hasInternet import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial import com.mikepenz.materialdrawer.iconics.iconicsIcon import com.mikepenz.materialdrawer.model.PrimaryDrawerItem @@ -193,7 +196,7 @@ class MainActivity : BaseActivity() { ) { if (response.body() != null && response.isSuccessful) { val account = response.body() as Account - DBUtils.addUser(db, account, domain, accessToken = accessToken, refreshToken = refreshToken, clientId = clientId, clientSecret = clientSecret) + addUser(db, account, domain, accessToken = accessToken, refreshToken = refreshToken, clientId = clientId, clientSecret = clientSecret) fillDrawerAccountInfo(account.id!!) } } diff --git a/app/src/main/java/com/h/pixeldroid/interfaces/EditImageFragmentListener.kt b/app/src/main/java/com/h/pixeldroid/interfaces/EditImageFragmentListener.kt deleted file mode 100644 index 3c743123..00000000 --- a/app/src/main/java/com/h/pixeldroid/interfaces/EditImageFragmentListener.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.h.pixeldroid.interfaces - -interface EditImageFragmentListener { - fun onBrightnessChange(brightness: Int) - - fun onSaturationChange(saturation: Float) - - fun onContrastChange(contrast: Float) - - fun onEditStarted() - - fun onEditCompleted() -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/interfaces/FilterListFragmentListener.kt b/app/src/main/java/com/h/pixeldroid/interfaces/FilterListFragmentListener.kt deleted file mode 100644 index f0df513e..00000000 --- a/app/src/main/java/com/h/pixeldroid/interfaces/FilterListFragmentListener.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.h.pixeldroid.interfaces - -import com.zomato.photofilters.imageprocessors.Filter - -interface FilterListFragmentListener { - fun onFilterSelected(filter: Filter) -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/interfaces/PostCreationListener.kt b/app/src/main/java/com/h/pixeldroid/interfaces/PostCreationListener.kt deleted file mode 100644 index d1970ece..00000000 --- a/app/src/main/java/com/h/pixeldroid/interfaces/PostCreationListener.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.h.pixeldroid.interfaces - -interface PostCreationListener { - fun onClick(position: Int) -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/objects/Context.kt b/app/src/main/java/com/h/pixeldroid/objects/Context.kt deleted file mode 100644 index f64b78af..00000000 --- a/app/src/main/java/com/h/pixeldroid/objects/Context.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.h.pixeldroid.objects - -import java.io.Serializable - -data class Context( - val ancestors : List, - val descendants : List -) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/PostCreationActivity.kt b/app/src/main/java/com/h/pixeldroid/postCreation/PostCreationActivity.kt similarity index 95% rename from app/src/main/java/com/h/pixeldroid/PostCreationActivity.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/PostCreationActivity.kt index 28e974bc..88a65673 100644 --- a/app/src/main/java/com/h/pixeldroid/PostCreationActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/PostCreationActivity.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid +package com.h.pixeldroid.postCreation import android.app.Activity import android.content.Intent @@ -16,13 +16,16 @@ import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.google.android.material.textfield.TextInputLayout -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.interfaces.PostCreationListener -import com.h.pixeldroid.objects.Attachment -import com.h.pixeldroid.objects.Instance -import com.h.pixeldroid.objects.Status -import com.h.pixeldroid.utils.ProgressRequestBody +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.MainActivity +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.postCreation.camera.CameraActivity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.api.objects.Attachment +import com.h.pixeldroid.utils.api.objects.Instance +import com.h.pixeldroid.utils.api.objects.Status +import com.h.pixeldroid.postCreation.photoEdit.PhotoEditActivity import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers @@ -37,7 +40,7 @@ private val TAG = "Post Creation Activity" private val MORE_PICTURES_REQUEST_CODE = 0xffff -class PostCreationActivity : BaseActivity(), PostCreationListener { +class PostCreationActivity : BaseActivity() { private lateinit var recycler : RecyclerView private lateinit var adapter : PostCreationAdapter @@ -95,7 +98,6 @@ class PostCreationActivity : BaseActivity(), PostCreationListener { upload() adapter = PostCreationAdapter(posts) - adapter.listener = this recycler = findViewById(R.id.image_grid) recycler.layoutManager = GridLayoutManager(this, 3) recycler.adapter = adapter @@ -252,7 +254,7 @@ class PostCreationActivity : BaseActivity(), PostCreationListener { } - override fun onClick(position: Int) { + fun onClick(position: Int) { positionResult = position val intent = Intent(this, PhotoEditActivity::class.java) @@ -296,7 +298,6 @@ class PostCreationActivity : BaseActivity(), PostCreationListener { } inner class PostCreationAdapter(private val posts: ArrayList): RecyclerView.Adapter() { - var listener: PostCreationListener? = null override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = @@ -335,7 +336,7 @@ class PostCreationActivity : BaseActivity(), PostCreationListener { .into(itemView.galleryImage) // adding click or tap handler for the image layout itemView.setOnClickListener { - listener?.onClick(adapterPosition) + this@PostCreationActivity.onClick(adapterPosition) } } diff --git a/app/src/main/java/com/h/pixeldroid/utils/ProgressRequestBody.kt b/app/src/main/java/com/h/pixeldroid/postCreation/ProgressRequestBody.kt similarity index 97% rename from app/src/main/java/com/h/pixeldroid/utils/ProgressRequestBody.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/ProgressRequestBody.kt index 6a5cbb19..62587bea 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/ProgressRequestBody.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/ProgressRequestBody.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.utils +package com.h.pixeldroid.postCreation import io.reactivex.Observable import io.reactivex.subjects.PublishSubject diff --git a/app/src/main/java/com/h/pixeldroid/utils/SquareLayout.kt b/app/src/main/java/com/h/pixeldroid/postCreation/SquareLayout.kt similarity index 79% rename from app/src/main/java/com/h/pixeldroid/utils/SquareLayout.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/SquareLayout.kt index 25bab4fe..a93dd3f0 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/SquareLayout.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/SquareLayout.kt @@ -1,10 +1,8 @@ -package com.h.pixeldroid.utils +package com.h.pixeldroid.postCreation -import android.widget.RelativeLayout -import android.os.Build -import android.annotation.TargetApi import android.content.Context import android.util.AttributeSet +import android.widget.RelativeLayout internal class SquareLayout(context: Context, attrs: AttributeSet) : RelativeLayout(context, attrs) { diff --git a/app/src/main/java/com/h/pixeldroid/CameraActivity.kt b/app/src/main/java/com/h/pixeldroid/postCreation/camera/CameraActivity.kt similarity index 86% rename from app/src/main/java/com/h/pixeldroid/CameraActivity.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/camera/CameraActivity.kt index fd12ece6..9a57109e 100644 --- a/app/src/main/java/com/h/pixeldroid/CameraActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/camera/CameraActivity.kt @@ -1,7 +1,8 @@ -package com.h.pixeldroid +package com.h.pixeldroid.postCreation.camera import android.os.Bundle -import com.h.pixeldroid.fragments.CameraFragment +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.R class CameraActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/h/pixeldroid/fragments/CameraFragment.kt b/app/src/main/java/com/h/pixeldroid/postCreation/camera/CameraFragment.kt similarity index 99% rename from app/src/main/java/com/h/pixeldroid/fragments/CameraFragment.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/camera/CameraFragment.kt index ba4b5eb8..3f8bafd6 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/CameraFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/camera/CameraFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.postCreation.camera import android.Manifest import android.app.Activity @@ -31,8 +31,8 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions -import com.h.pixeldroid.PostCreationActivity import com.h.pixeldroid.R +import com.h.pixeldroid.postCreation.PostCreationActivity import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.io.File diff --git a/app/src/main/java/com/h/pixeldroid/fragments/EditImageFragment.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/EditImageFragment.kt similarity index 93% rename from app/src/main/java/com/h/pixeldroid/fragments/EditImageFragment.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/EditImageFragment.kt index a854a8f7..594d1c93 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/EditImageFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/EditImageFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.postCreation.photoEdit import android.os.Bundle import androidx.fragment.app.Fragment @@ -7,11 +7,10 @@ import android.view.View import android.view.ViewGroup import android.widget.SeekBar import com.h.pixeldroid.R -import com.h.pixeldroid.interfaces.EditImageFragmentListener class EditImageFragment : Fragment(), SeekBar.OnSeekBarChangeListener { - private var listener: EditImageFragmentListener? = null + private var listener: PhotoEditActivity? = null private lateinit var seekbarBrightness: SeekBar private lateinit var seekbarSaturation: SeekBar @@ -86,7 +85,7 @@ class EditImageFragment : Fragment(), SeekBar.OnSeekBarChangeListener { listener!!.onEditCompleted() } - fun setListener(listener: EditImageFragmentListener) { + fun setListener(listener: PhotoEditActivity) { this.listener = listener } } diff --git a/app/src/main/java/com/h/pixeldroid/adapters/EditPhotoViewPagerAdapter.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/EditPhotoViewPagerAdapter.kt similarity index 86% rename from app/src/main/java/com/h/pixeldroid/adapters/EditPhotoViewPagerAdapter.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/EditPhotoViewPagerAdapter.kt index b37ecb75..06a7a57c 100644 --- a/app/src/main/java/com/h/pixeldroid/adapters/EditPhotoViewPagerAdapter.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/EditPhotoViewPagerAdapter.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.adapters +package com.h.pixeldroid.postCreation.photoEdit import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager @@ -19,7 +19,7 @@ class EditPhotoViewPagerAdapter (manager: FragmentManager): fragmentTitleList.add(title) } - override fun getPageTitle(position: Int): CharSequence? { + override fun getPageTitle(position: Int): CharSequence { return fragmentTitleList[position] } } \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/fragments/FilterListFragment.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/FilterListFragment.kt similarity index 83% rename from app/src/main/java/com/h/pixeldroid/fragments/FilterListFragment.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/FilterListFragment.kt index 9d687a98..020dbd02 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/FilterListFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/FilterListFragment.kt @@ -1,36 +1,28 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.postCreation.photoEdit import android.graphics.Bitmap -import android.graphics.ImageDecoder -import android.os.Build import android.os.Bundle import android.provider.MediaStore -import android.util.Log import android.util.TypedValue -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.graphics.decodeBitmap +import androidx.fragment.app.Fragment import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.h.pixeldroid.PhotoEditActivity import com.h.pixeldroid.R -import com.h.pixeldroid.adapters.ThumbnailAdapter -import com.h.pixeldroid.interfaces.FilterListFragmentListener -import com.h.pixeldroid.utils.SpaceItemDecoration import com.zomato.photofilters.FilterPack import com.zomato.photofilters.imageprocessors.Filter import com.zomato.photofilters.utils.ThumbnailItem import com.zomato.photofilters.utils.ThumbnailsManager -class FilterListFragment : Fragment(), FilterListFragmentListener { +class FilterListFragment : Fragment() { - internal lateinit var recyclerView: RecyclerView - internal var listener : FilterListFragmentListener? = null + private lateinit var recyclerView: RecyclerView + private var listener : PhotoEditActivity? = null internal lateinit var adapter: ThumbnailAdapter - internal lateinit var tbItemList: MutableList + private lateinit var tbItemList: MutableList override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -107,13 +99,13 @@ class FilterListFragment : Fragment(), FilterListFragmentListener { } } - override fun onFilterSelected(filter: Filter) { + fun onFilterSelected(filter: Filter) { if(listener != null ){ listener!!.onFilterSelected(filter) } } - fun setListener(listFragmentListener: FilterListFragmentListener) { + fun setListener(listFragmentListener: PhotoEditActivity) { this.listener = listFragmentListener } } diff --git a/app/src/main/java/com/h/pixeldroid/utils/NonSwipeableViewPager.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/NonSwipeableViewPager.kt similarity index 96% rename from app/src/main/java/com/h/pixeldroid/utils/NonSwipeableViewPager.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/NonSwipeableViewPager.kt index faff962e..5fecbf38 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/NonSwipeableViewPager.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/NonSwipeableViewPager.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.utils +package com.h.pixeldroid.postCreation.photoEdit import android.content.Context import android.util.AttributeSet diff --git a/app/src/main/java/com/h/pixeldroid/PhotoEditActivity.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/PhotoEditActivity.kt similarity index 95% rename from app/src/main/java/com/h/pixeldroid/PhotoEditActivity.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/PhotoEditActivity.kt index c325f6ea..8f15b44c 100644 --- a/app/src/main/java/com/h/pixeldroid/PhotoEditActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/PhotoEditActivity.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid +package com.h.pixeldroid.postCreation.photoEdit import android.app.Activity import android.app.AlertDialog @@ -29,12 +29,9 @@ import com.bumptech.glide.Glide import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayout -import com.h.pixeldroid.adapters.EditPhotoViewPagerAdapter -import com.h.pixeldroid.fragments.EditImageFragment -import com.h.pixeldroid.fragments.FilterListFragment -import com.h.pixeldroid.interfaces.EditImageFragmentListener -import com.h.pixeldroid.interfaces.FilterListFragmentListener -import com.h.pixeldroid.utils.NonSwipeableViewPager +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.R +import com.h.pixeldroid.postCreation.PostCreationActivity import com.yalantis.ucrop.UCrop import com.zomato.photofilters.imageprocessors.Filter import com.zomato.photofilters.imageprocessors.subfilters.BrightnessSubFilter @@ -58,9 +55,9 @@ private const val REQUEST_CODE_PERMISSIONS_SEND_PHOTO = 7 private val REQUIRED_PERMISSIONS = arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) -class PhotoEditActivity : BaseActivity(), FilterListFragmentListener, EditImageFragmentListener { +class PhotoEditActivity : BaseActivity() { - internal var saving: Boolean = false + private var saving: Boolean = false private val BITMAP_CONFIG = Bitmap.Config.ARGB_8888 private val BRIGHTNESS_START = 0 private val SATURATION_START = 1.0f @@ -76,8 +73,8 @@ class PhotoEditActivity : BaseActivity(), FilterListFragmentListener, EditImageF private lateinit var filterListFragment: FilterListFragment private lateinit var editImageFragment: EditImageFragment - lateinit var viewPager: NonSwipeableViewPager - lateinit var tabLayout: TabLayout + private lateinit var viewPager: NonSwipeableViewPager + private lateinit var tabLayout: TabLayout private var brightnessFinal = BRIGHTNESS_START private var saturationFinal = SATURATION_START @@ -189,7 +186,7 @@ class PhotoEditActivity : BaseActivity(), FilterListFragmentListener, EditImageF } // - override fun onFilterSelected(filter: Filter) { + fun onFilterSelected(filter: Filter) { resetControls() filteredImage = compressedOriginalImage!!.copy(BITMAP_CONFIG, true) image_preview.setImageBitmap(filter.processFilter(filteredImage)) @@ -219,21 +216,21 @@ class PhotoEditActivity : BaseActivity(), FilterListFragmentListener, EditImageF } } - override fun onBrightnessChange(brightness: Int) { + fun onBrightnessChange(brightness: Int) { brightnessFinal = brightness val myFilter = Filter() myFilter.addEditFilters(brightness, saturationFinal, contrastFinal) applyFilterAndShowImage(myFilter, filteredImage) } - override fun onSaturationChange(saturation: Float) { + fun onSaturationChange(saturation: Float) { saturationFinal = saturation val myFilter = Filter() myFilter.addEditFilters(brightnessFinal, saturation, contrastFinal) applyFilterAndShowImage(myFilter, filteredImage) } - override fun onContrastChange(contrast: Float) { + fun onContrastChange(contrast: Float) { contrastFinal = contrast val myFilter = Filter() myFilter.addEditFilters(brightnessFinal, saturationFinal, contrast) @@ -247,10 +244,10 @@ class PhotoEditActivity : BaseActivity(), FilterListFragmentListener, EditImageF return this } - override fun onEditStarted() { + fun onEditStarted() { } - override fun onEditCompleted() { + fun onEditCompleted() { val myFilter = Filter() myFilter.addEditFilters(brightnessFinal, saturationFinal, contrastFinal) val bitmap = filteredImage.copy(BITMAP_CONFIG, true) diff --git a/app/src/main/java/com/h/pixeldroid/utils/SpaceItemDecoration.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/SpaceItemDecoration.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/utils/SpaceItemDecoration.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/SpaceItemDecoration.kt index 3f3dfe0e..dbef867f 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/SpaceItemDecoration.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/SpaceItemDecoration.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.utils +package com.h.pixeldroid.postCreation.photoEdit import android.graphics.Rect import android.view.View diff --git a/app/src/main/java/com/h/pixeldroid/adapters/ThumbnailAdapter.kt b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/ThumbnailAdapter.kt similarity index 91% rename from app/src/main/java/com/h/pixeldroid/adapters/ThumbnailAdapter.kt rename to app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/ThumbnailAdapter.kt index 1e3dbd32..42d474b6 100644 --- a/app/src/main/java/com/h/pixeldroid/adapters/ThumbnailAdapter.kt +++ b/app/src/main/java/com/h/pixeldroid/postCreation/photoEdit/ThumbnailAdapter.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.adapters +package com.h.pixeldroid.postCreation.photoEdit import android.content.Context import android.view.LayoutInflater @@ -9,13 +9,12 @@ import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.h.pixeldroid.R -import com.h.pixeldroid.interfaces.FilterListFragmentListener import com.zomato.photofilters.utils.ThumbnailItem import kotlinx.android.synthetic.main.thumbnail_list_item.view.* class ThumbnailAdapter (private val context: Context, private val tbItemList: List, - private val listener: FilterListFragmentListener): RecyclerView.Adapter() { + private val listener: FilterListFragment): RecyclerView.Adapter() { private var selectedIndex = 0 diff --git a/app/src/main/java/com/h/pixeldroid/utils/customSpans/ClickableSpanNoUnderline.kt b/app/src/main/java/com/h/pixeldroid/posts/ClickableSpanNoUnderline.kt similarity index 85% rename from app/src/main/java/com/h/pixeldroid/utils/customSpans/ClickableSpanNoUnderline.kt rename to app/src/main/java/com/h/pixeldroid/posts/ClickableSpanNoUnderline.kt index 786d68ee..45d9261d 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/customSpans/ClickableSpanNoUnderline.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/ClickableSpanNoUnderline.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.utils.customSpans +package com.h.pixeldroid.posts import android.text.TextPaint import android.text.style.ClickableSpan diff --git a/app/src/main/java/com/h/pixeldroid/posts/HtmlUtils.kt b/app/src/main/java/com/h/pixeldroid/posts/HtmlUtils.kt new file mode 100644 index 00000000..312f6fc4 --- /dev/null +++ b/app/src/main/java/com/h/pixeldroid/posts/HtmlUtils.kt @@ -0,0 +1,141 @@ +package com.h.pixeldroid.posts + +import android.content.Context +import android.os.Build +import android.text.Html +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.ClickableSpan +import android.text.style.URLSpan +import android.util.Log +import android.view.View +import android.widget.TextView +import android.widget.Toast +import androidx.core.text.toSpanned +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.api.objects.Account.Companion.getAccountFromId +import com.h.pixeldroid.utils.api.objects.Mention +import java.net.URI +import java.net.URISyntaxException +import java.text.ParseException +import java.util.* + +fun fromHtml(html: String): Spanned { + val result: Spanned = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY) + } else { + @Suppress("DEPRECATION") + Html.fromHtml(html) + } + return result.trim().toSpanned() +} + +fun getDomain(urlString: String?): String { + val uri: URI + try { + uri = URI(urlString!!) + } catch (e: URISyntaxException) { + return "" + } + val host: String = uri.host + return if (host.startsWith("www.")) { + host.substring(4) + } else { + host + } +} + +fun parseHTMLText( + text : String, + mentions: List?, + api : PixelfedAPI, + context: Context, + credential: String +) : Spanned { + //Convert text to spannable + val content = fromHtml(text) + + //Retrive all links that should be made clickable + val builder = SpannableStringBuilder(content) + val urlSpans = content.getSpans(0, content.length, URLSpan::class.java) + + for(span in urlSpans) { + val start = builder.getSpanStart(span) + val end = builder.getSpanEnd(span) + val flags = builder.getSpanFlags(span) + val text = builder.subSequence(start, end) + var customSpan: ClickableSpan? = null + + //Handle hashtags + if (text[0] == '#') { + val tag = text.subSequence(1, text.length).toString() + customSpan = object : ClickableSpanNoUnderline() { + override fun onClick(widget: View) { + Toast.makeText(context, tag, Toast.LENGTH_SHORT).show() + } + + } + } + + //Handle mentions + if(text[0] == '@' && !mentions.isNullOrEmpty()) { + val accountUsername = text.subSequence(1, text.length).toString() + var id: String? = null + + //Go through all mentions stored in the status + for (mention in mentions) { + if (mention.username.equals(accountUsername, ignoreCase = true) + ) { + id = mention.id + + //Mentions can be of users in other domains + if (mention.url.contains(getDomain(span.url))) { + break + } + } + } + + //Check that we found a user for the given mention + if (id != null) { + val accountId: String = id + customSpan = object : ClickableSpanNoUnderline() { + override fun onClick(widget: View) { + Log.e("MENTION", "CLICKED") + //Retrieve the account for the given profile + getAccountFromId(accountId, api, context, credential) + } + } + } + } + + builder.removeSpan(span) + builder.setSpan(customSpan, start, end, flags) + + // Add zero-width space after links in end of line to fix its too large hitbox. + if (end >= builder.length || builder.subSequence(end, end + 1).toString() == "\n") { + builder.insert(end, "\u200B") + } + } + + return builder +} + + +fun setTextViewFromISO8601(date: Date, textView: TextView, absoluteTime: Boolean, context: Context) { + val now = Date().time + + try { + val then = date.time + val formattedDate = android.text.format.DateUtils + .getRelativeTimeSpanString(then, now, + android.text.format.DateUtils.SECOND_IN_MILLIS, + android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE) + + textView.text = if(absoluteTime) context.getString(R.string.posted_on).format(date) + else "$formattedDate" + + } catch (e: ParseException) { + e.printStackTrace() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/PostActivity.kt b/app/src/main/java/com/h/pixeldroid/posts/PostActivity.kt similarity index 66% rename from app/src/main/java/com/h/pixeldroid/PostActivity.kt rename to app/src/main/java/com/h/pixeldroid/posts/PostActivity.kt index 88dae4eb..4fcd99be 100644 --- a/app/src/main/java/com/h/pixeldroid/PostActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/PostActivity.kt @@ -1,18 +1,19 @@ -package com.h.pixeldroid +package com.h.pixeldroid.posts import android.os.Bundle import android.util.Log import android.view.View -import com.h.pixeldroid.fragments.PostFragment -import com.h.pixeldroid.objects.DiscoverPost -import com.h.pixeldroid.objects.Status -import com.h.pixeldroid.objects.Status.Companion.DISCOVER_TAG -import com.h.pixeldroid.objects.Status.Companion.DOMAIN_TAG -import com.h.pixeldroid.objects.Status.Companion.POST_TAG +import androidx.lifecycle.lifecycleScope +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.api.objects.DiscoverPost +import com.h.pixeldroid.utils.api.objects.Status +import com.h.pixeldroid.utils.api.objects.Status.Companion.DISCOVER_TAG +import com.h.pixeldroid.utils.api.objects.Status.Companion.DOMAIN_TAG +import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_TAG +import com.h.pixeldroid.utils.BaseActivity import kotlinx.android.synthetic.main.activity_post.* -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response +import retrofit2.HttpException +import java.io.IOException class PostActivity : BaseActivity() { private lateinit var postFragment : PostFragment @@ -55,26 +56,24 @@ class PostActivity : BaseActivity() { ) { val api = apiHolder.api ?: apiHolder.setDomainToCurrentUser(db) val id = discoverPost.url?.substringAfterLast('/') ?: "" - api.getStatus("Bearer $accessToken", id).enqueue(object : Callback { - - override fun onFailure(call: Call, t: Throwable) { - Log.e("PostActivity:", t.toString()) + lifecycleScope.launchWhenCreated { + try { + val status = api.getStatus("Bearer $accessToken", id) + postProgressBar.visibility = View.GONE + initializeFragment(arguments, status) + } catch (exception: IOException) { + //TODO show error message + Log.e("PostActivity:", exception.toString()) + } catch (exception: HttpException) { } - - override fun onResponse(call: Call, response: Response) { - if(response.code() == 200) { - val status = response.body()!! - postProgressBar.visibility = View.GONE - initializeFragment(arguments, status) - } - } - }) + } } private fun initializeFragment(arguments: Bundle, status: Status?){ supportActionBar?.title = getString(R.string.post_title).format(status!!.account?.getDisplayName()) arguments.putSerializable(POST_TAG, status) postFragment.arguments = arguments + supportFragmentManager.isStateSaved supportFragmentManager.beginTransaction() .add(R.id.postFragmentSingle, postFragment).commit() postFragmentSingle.visibility = View.VISIBLE diff --git a/app/src/main/java/com/h/pixeldroid/fragments/PostFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/PostFragment.kt similarity index 79% rename from app/src/main/java/com/h/pixeldroid/fragments/PostFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/PostFragment.kt index c3adfe9b..cfed84bd 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/PostFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/PostFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.posts import android.os.Bundle import android.view.LayoutInflater @@ -6,9 +6,10 @@ import android.view.View import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.h.pixeldroid.R -import com.h.pixeldroid.objects.Status -import com.h.pixeldroid.objects.Status.Companion.DOMAIN_TAG -import com.h.pixeldroid.objects.Status.Companion.POST_TAG +import com.h.pixeldroid.utils.api.objects.Status +import com.h.pixeldroid.utils.api.objects.Status.Companion.DOMAIN_TAG +import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_TAG +import com.h.pixeldroid.utils.BaseFragment class PostFragment : BaseFragment() { diff --git a/app/src/main/java/com/h/pixeldroid/ReportActivity.kt b/app/src/main/java/com/h/pixeldroid/posts/ReportActivity.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/ReportActivity.kt rename to app/src/main/java/com/h/pixeldroid/posts/ReportActivity.kt index feebb205..e81f1e8e 100644 --- a/app/src/main/java/com/h/pixeldroid/ReportActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/ReportActivity.kt @@ -1,10 +1,12 @@ -package com.h.pixeldroid +package com.h.pixeldroid.posts import android.os.Bundle import android.util.Log import android.view.View -import com.h.pixeldroid.objects.Report -import com.h.pixeldroid.objects.Status +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.api.objects.Report +import com.h.pixeldroid.utils.api.objects.Status +import com.h.pixeldroid.utils.BaseActivity import kotlinx.android.synthetic.main.activity_report.* import retrofit2.Call import retrofit2.Callback diff --git a/app/src/main/java/com/h/pixeldroid/fragments/StatusViewHolder.kt b/app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt similarity index 95% rename from app/src/main/java/com/h/pixeldroid/fragments/StatusViewHolder.kt rename to app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt index 50803b3c..78999d01 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/StatusViewHolder.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.posts import android.Manifest import android.app.AlertDialog @@ -23,15 +23,12 @@ import com.bumptech.glide.RequestBuilder import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayoutMediator import com.h.pixeldroid.R -import com.h.pixeldroid.ReportActivity -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.objects.Attachment -import com.h.pixeldroid.objects.Context -import com.h.pixeldroid.objects.Status -import com.h.pixeldroid.utils.HtmlUtils +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.api.objects.Attachment +import com.h.pixeldroid.utils.api.objects.Context +import com.h.pixeldroid.utils.api.objects.Status import com.h.pixeldroid.utils.ImageConverter -import com.h.pixeldroid.utils.Utils import com.karumi.dexter.Dexter import com.karumi.dexter.listener.PermissionDeniedResponse import com.karumi.dexter.listener.PermissionGrantedResponse @@ -98,7 +95,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } - fun setupPost( + private fun setupPost( rootView: View, request: RequestBuilder, //homeFragment: Fragment, @@ -128,7 +125,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } //Convert the date to a readable string - Utils.setTextViewFromISO8601( + setTextViewFromISO8601( status?.created_at!!, rootView.postDate, isActivity, @@ -160,7 +157,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { rootView.findViewById(R.id.commentContainer).visibility = View.GONE } - fun setupPostPics( + private fun setupPostPics( rootView: View, request: RequestBuilder, //homeFragment: Fragment @@ -192,7 +189,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun setupTabsLayout( + private fun setupTabsLayout( rootView: View, request: RequestBuilder, ) { @@ -209,18 +206,18 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { }.attach() } - fun setDescription(rootView: View, api: PixelfedAPI, credential: String) { + private fun setDescription(rootView: View, api: PixelfedAPI, credential: String) { rootView.findViewById(R.id.description).apply { if (status?.content.isNullOrBlank()) { visibility = View.GONE } else { - text = HtmlUtils.parseHTMLText(status?.content.orEmpty(), status?.mentions, api, rootView.context, credential) + text = parseHTMLText(status?.content.orEmpty(), status?.mentions, api, rootView.context, credential) movementMethod = LinkMovementMethod.getInstance() } } } - fun activateButtons(holder: StatusViewHolder, api: PixelfedAPI, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){ + private fun activateButtons(holder: StatusViewHolder, api: PixelfedAPI, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){ val user = db.userDao().getActiveUser()!! val credential = "Bearer ${user.accessToken}" @@ -246,7 +243,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { activateMoreButton(holder, api, db, lifecycleScope) } - fun activateReblogger( + private fun activateReblogger( holder: StatusViewHolder, api: PixelfedAPI, credential: String, @@ -271,7 +268,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun reblogPost( + private fun reblogPost( holder : StatusViewHolder, api: PixelfedAPI, credential: String @@ -301,7 +298,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun undoReblogPost( + private fun undoReblogPost( holder : StatusViewHolder, api: PixelfedAPI, credential: String, @@ -331,7 +328,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun activateMoreButton(holder: StatusViewHolder, api: PixelfedAPI, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){ + private fun activateMoreButton(holder: StatusViewHolder, api: PixelfedAPI, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){ holder.more.setOnClickListener { PopupMenu(it.context, it).apply { setOnMenuItemClickListener { item -> @@ -448,7 +445,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } - fun activateDoubleTapLiker( + private fun activateDoubleTapLiker( holder: StatusViewHolder, api: PixelfedAPI, credential: String @@ -481,7 +478,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun activateLiker( + private fun activateLiker( holder: StatusViewHolder, api: PixelfedAPI, credential: String, @@ -507,7 +504,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun likePostCall( + private fun likePostCall( holder : StatusViewHolder, api: PixelfedAPI, credential: String, @@ -537,7 +534,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun unLikePostCall( + private fun unLikePostCall( holder : StatusViewHolder, api: PixelfedAPI, credential: String, @@ -568,7 +565,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun showComments( + private fun showComments( holder: StatusViewHolder, api: PixelfedAPI, credential: String @@ -589,7 +586,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun activateCommenter( + private fun activateCommenter( holder: StatusViewHolder, api: PixelfedAPI, credential: String @@ -615,7 +612,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun toggleCommentInput( + private fun toggleCommentInput( holder : StatusViewHolder ) { //Toggle comment button @@ -650,7 +647,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { view.commentText.text = commentContent } - fun retrieveComments( + private fun retrieveComments( holder : StatusViewHolder, api: PixelfedAPI, credential: String, @@ -686,7 +683,7 @@ class StatusViewHolder(val view: View) : RecyclerView.ViewHolder(view) { } } - fun postComment( + private fun postComment( holder : StatusViewHolder, api: PixelfedAPI, credential: String, diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/CommonFeedFragmentUtils.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/CommonFeedFragmentUtils.kt similarity index 95% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/CommonFeedFragmentUtils.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/CommonFeedFragmentUtils.kt index 0494fa8b..30263739 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/CommonFeedFragmentUtils.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/CommonFeedFragmentUtils.kt @@ -1,11 +1,7 @@ -package com.h.pixeldroid.fragments.feeds +package com.h.pixeldroid.posts.feeds import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import android.widget.ProgressBar -import androidx.annotation.StringRes -import androidx.constraintlayout.motion.widget.MotionLayout import androidx.core.view.isVisible import androidx.core.view.size import androidx.paging.LoadState diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/CachedFeedFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/CachedFeedFragment.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/CachedFeedFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/CachedFeedFragment.kt index 135b3fb5..ab2ec9e8 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/CachedFeedFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/CachedFeedFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.cachedFeeds +package com.h.pixeldroid.posts.feeds.cachedFeeds import android.os.Bundle import android.view.LayoutInflater @@ -17,11 +17,11 @@ import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch import com.h.pixeldroid.databinding.FragmentFeedBinding -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.dao.feedContent.FeedContentDao -import com.h.pixeldroid.fragments.BaseFragment -import com.h.pixeldroid.fragments.feeds.initAdapter -import com.h.pixeldroid.objects.FeedContentDatabase +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.dao.feedContent.FeedContentDao +import com.h.pixeldroid.utils.BaseFragment +import com.h.pixeldroid.posts.feeds.initAdapter +import com.h.pixeldroid.utils.api.objects.FeedContentDatabase /** diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/FeedContentRepository.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/FeedContentRepository.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/FeedContentRepository.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/FeedContentRepository.kt index 6ed1c724..9c887d48 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/FeedContentRepository.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/FeedContentRepository.kt @@ -14,12 +14,12 @@ * limitations under the License. */ -package com.h.pixeldroid.fragments.feeds.cachedFeeds +package com.h.pixeldroid.posts.feeds.cachedFeeds import androidx.paging.* -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.dao.feedContent.FeedContentDao -import com.h.pixeldroid.objects.FeedContentDatabase +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.dao.feedContent.FeedContentDao +import com.h.pixeldroid.utils.api.objects.FeedContentDatabase import kotlinx.coroutines.flow.Flow import javax.inject.Inject diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/FeedViewModel.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/FeedViewModel.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/FeedViewModel.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/FeedViewModel.kt index 8e3c5c4f..ac436408 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/FeedViewModel.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/FeedViewModel.kt @@ -14,12 +14,12 @@ * limitations under the License. */ -package com.h.pixeldroid.fragments.feeds.cachedFeeds +package com.h.pixeldroid.posts.feeds.cachedFeeds import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.paging.* -import com.h.pixeldroid.objects.FeedContentDatabase +import com.h.pixeldroid.utils.api.objects.FeedContentDatabase import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/notifications/NotificationsFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/notifications/NotificationsFragment.kt similarity index 74% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/notifications/NotificationsFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/notifications/NotificationsFragment.kt index 7dd464dc..ee02bf44 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/notifications/NotificationsFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/notifications/NotificationsFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.cachedFeeds.notifications +package com.h.pixeldroid.posts.feeds.cachedFeeds.notifications import android.content.Context import android.content.Intent @@ -16,22 +16,22 @@ import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide -import com.h.pixeldroid.PostActivity -import com.h.pixeldroid.ProfileActivity +import com.h.pixeldroid.posts.PostActivity +import com.h.pixeldroid.profile.ProfileActivity import com.h.pixeldroid.R -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.di.PixelfedAPIHolder -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Notification -import com.h.pixeldroid.objects.Status -import com.h.pixeldroid.utils.Utils.Companion.setTextViewFromISO8601 +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.di.PixelfedAPIHolder +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Notification +import com.h.pixeldroid.utils.api.objects.Status import kotlinx.android.synthetic.main.fragment_notifications.view.* -import com.h.pixeldroid.fragments.feeds.cachedFeeds.CachedFeedFragment -import com.h.pixeldroid.fragments.feeds.cachedFeeds.FeedViewModel -import com.h.pixeldroid.fragments.feeds.cachedFeeds.ViewModelFactory -import com.h.pixeldroid.utils.HtmlUtils.Companion.parseHTMLText +import com.h.pixeldroid.posts.feeds.cachedFeeds.CachedFeedFragment +import com.h.pixeldroid.posts.feeds.cachedFeeds.FeedViewModel +import com.h.pixeldroid.posts.feeds.cachedFeeds.ViewModelFactory +import com.h.pixeldroid.posts.parseHTMLText +import com.h.pixeldroid.posts.setTextViewFromISO8601 /** @@ -83,48 +83,50 @@ class NotificationViewHolder(view: View) : RecyclerView.ViewHolder(view) { } private fun Notification.openActivity() { - val intent: Intent + val intent: Intent = when (type){ Notification.NotificationType.mention, Notification.NotificationType.favourite, Notification.NotificationType.poll, Notification.NotificationType.reblog -> { - intent = openPostFromNotification() + openPostFromNotification() } Notification.NotificationType.follow -> { - intent = Intent(itemView.context, ProfileActivity::class.java) - intent.putExtra(Account.ACCOUNT_TAG, account) + Intent(itemView.context, ProfileActivity::class.java).apply { + putExtra(Account.ACCOUNT_TAG, account) + } } + null -> return //TODO show an error here? } itemView.context.startActivity(intent) } - private fun Notification.openPostFromNotification(): Intent { - val intent = Intent(itemView.context, PostActivity::class.java) - intent.putExtra(Status.POST_TAG, status) - return intent - } + private fun Notification.openPostFromNotification(): Intent = + Intent(itemView.context, PostActivity::class.java).apply { + putExtra(Status.POST_TAG, status) + } - private fun setNotificationType(type: Notification.NotificationType, username: String, + private fun setNotificationType(type: Notification.NotificationType, + username: String, textView: TextView ){ val context = textView.context val (format: String, drawable: Drawable?) = when(type) { Notification.NotificationType.follow -> { - setNotificationTypeTextView(context, R.string.followed_notification, R.drawable.ic_follow) + getStringAndDrawable(context, R.string.followed_notification, R.drawable.ic_follow) } Notification.NotificationType.mention -> { - setNotificationTypeTextView(context, R.string.mention_notification, R.drawable.ic_apenstaart) + getStringAndDrawable(context, R.string.mention_notification, R.drawable.ic_apenstaart) } Notification.NotificationType.reblog -> { - setNotificationTypeTextView(context, R.string.shared_notification, R.drawable.ic_reblog_blue) + getStringAndDrawable(context, R.string.shared_notification, R.drawable.ic_reblog_blue) } Notification.NotificationType.favourite -> { - setNotificationTypeTextView(context, R.string.liked_notification, R.drawable.ic_like_full) + getStringAndDrawable(context, R.string.liked_notification, R.drawable.ic_like_full) } Notification.NotificationType.poll -> { - setNotificationTypeTextView(context, R.string.poll_notification, R.drawable.poll) + getStringAndDrawable(context, R.string.poll_notification, R.drawable.poll) } } textView.text = format.format(username) @@ -132,9 +134,9 @@ class NotificationViewHolder(view: View) : RecyclerView.ViewHolder(view) { drawable,null,null,null ) } - private fun setNotificationTypeTextView(context: Context, format: Int, drawable: Int): Pair { - return Pair(context.getString(format), ContextCompat.getDrawable(context, drawable)) - } + + private fun getStringAndDrawable(context: Context, stringToFormat: Int, drawable: Int): Pair + = Pair(context.getString(stringToFormat), ContextCompat.getDrawable(context, drawable)) @@ -152,7 +154,7 @@ class NotificationViewHolder(view: View) : RecyclerView.ViewHolder(view) { photoThumbnail.visibility = View.GONE } - notification?.type?.let { setNotificationType(it, notification.account.username!!, notificationType) } + notification?.type?.let { notification.account?.username?.let { username -> setNotificationType(it, username, notificationType) } } notification?.created_at?.let { setTextViewFromISO8601(it, notificationTime, false, itemView.context) } //Convert HTML to clickable text diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/notifications/NotificationsRemoteMediator.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/notifications/NotificationsRemoteMediator.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/notifications/NotificationsRemoteMediator.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/notifications/NotificationsRemoteMediator.kt index 324f222a..a518742d 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/notifications/NotificationsRemoteMediator.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/notifications/NotificationsRemoteMediator.kt @@ -14,13 +14,13 @@ * limitations under the License. */ -package com.h.pixeldroid.fragments.feeds.cachedFeeds.notifications +package com.h.pixeldroid.posts.feeds.cachedFeeds.notifications import androidx.paging.* import androidx.room.withTransaction -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.di.PixelfedAPIHolder -import com.h.pixeldroid.objects.Notification +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.di.PixelfedAPIHolder +import com.h.pixeldroid.utils.api.objects.Notification import retrofit2.HttpException import java.io.IOException import javax.inject.Inject @@ -57,7 +57,7 @@ class NotificationsRemoteMediator @Inject constructor( try { val user = db.userDao().getActiveUser()!! val api = apiHolder.api ?: apiHolder.setDomainToCurrentUser(db) - val accessToken = user.accessToken.orEmpty() + val accessToken = user.accessToken val apiResponse = api.notifications("Bearer $accessToken", max_id = max_id, diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/HomeFeedRemoteMediator.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/HomeFeedRemoteMediator.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/HomeFeedRemoteMediator.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/HomeFeedRemoteMediator.kt index 6bdfbee6..cde22c9d 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/HomeFeedRemoteMediator.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/HomeFeedRemoteMediator.kt @@ -1,10 +1,10 @@ -package com.h.pixeldroid.fragments.feeds.cachedFeeds.postFeeds +package com.h.pixeldroid.posts.feeds.cachedFeeds.postFeeds import androidx.paging.* import androidx.room.withTransaction -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.di.PixelfedAPIHolder -import com.h.pixeldroid.db.entities.HomeStatusDatabaseEntity +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.di.PixelfedAPIHolder +import com.h.pixeldroid.utils.db.entities.HomeStatusDatabaseEntity import retrofit2.HttpException import java.io.IOException import javax.inject.Inject @@ -42,7 +42,7 @@ class HomeFeedRemoteMediator @Inject constructor( try { val user = db.userDao().getActiveUser()!! val api = apiHolder.api ?: apiHolder.setDomainToCurrentUser(db) - val accessToken = user.accessToken.orEmpty() + val accessToken = user.accessToken val apiResponse = api.timelineHome( "Bearer $accessToken", max_id= max_id, min_id = min_id, diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/PostFeedFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/PostFeedFragment.kt similarity index 85% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/PostFeedFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/PostFeedFragment.kt index 9cc4176d..f2a66b3c 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/PostFeedFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/PostFeedFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.cachedFeeds.postFeeds +package com.h.pixeldroid.posts.feeds.cachedFeeds.postFeeds import android.os.Bundle import android.view.LayoutInflater @@ -12,13 +12,13 @@ import androidx.paging.RemoteMediator import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.h.pixeldroid.R -import com.h.pixeldroid.db.dao.feedContent.FeedContentDao -import com.h.pixeldroid.fragments.StatusViewHolder -import com.h.pixeldroid.fragments.feeds.cachedFeeds.FeedViewModel -import com.h.pixeldroid.fragments.feeds.cachedFeeds.CachedFeedFragment -import com.h.pixeldroid.fragments.feeds.cachedFeeds.ViewModelFactory -import com.h.pixeldroid.objects.FeedContentDatabase -import com.h.pixeldroid.objects.Status +import com.h.pixeldroid.utils.db.dao.feedContent.FeedContentDao +import com.h.pixeldroid.posts.StatusViewHolder +import com.h.pixeldroid.posts.feeds.cachedFeeds.FeedViewModel +import com.h.pixeldroid.posts.feeds.cachedFeeds.CachedFeedFragment +import com.h.pixeldroid.posts.feeds.cachedFeeds.ViewModelFactory +import com.h.pixeldroid.utils.api.objects.FeedContentDatabase +import com.h.pixeldroid.utils.api.objects.Status /** diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/PublicFeedRemoteMediator.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/PublicFeedRemoteMediator.kt similarity index 93% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/PublicFeedRemoteMediator.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/PublicFeedRemoteMediator.kt index 0d65a5eb..f668105e 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/cachedFeeds/postFeeds/PublicFeedRemoteMediator.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/cachedFeeds/postFeeds/PublicFeedRemoteMediator.kt @@ -14,13 +14,13 @@ * limitations under the License. */ -package com.h.pixeldroid.fragments.feeds.cachedFeeds.postFeeds +package com.h.pixeldroid.posts.feeds.cachedFeeds.postFeeds import androidx.paging.* import androidx.room.withTransaction -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.PublicFeedStatusDatabaseEntity -import com.h.pixeldroid.di.PixelfedAPIHolder +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.PublicFeedStatusDatabaseEntity +import com.h.pixeldroid.utils.di.PixelfedAPIHolder import retrofit2.HttpException import java.io.IOException import javax.inject.Inject diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/FeedViewModel.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/FeedViewModel.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/FeedViewModel.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/FeedViewModel.kt index 8f8be2af..4111b7e9 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/FeedViewModel.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/FeedViewModel.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds +package com.h.pixeldroid.posts.feeds.uncachedFeeds import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.paging.* -import com.h.pixeldroid.objects.FeedContent +import com.h.pixeldroid.utils.api.objects.FeedContent import kotlinx.coroutines.flow.Flow /** diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/UncachedFeedFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/UncachedFeedFragment.kt similarity index 93% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/UncachedFeedFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/UncachedFeedFragment.kt index 027fe514..f49343d0 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/UncachedFeedFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/UncachedFeedFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds +package com.h.pixeldroid.posts.feeds.uncachedFeeds import android.os.Bundle import android.view.LayoutInflater @@ -17,9 +17,9 @@ import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch import com.h.pixeldroid.databinding.FragmentFeedBinding -import com.h.pixeldroid.fragments.BaseFragment -import com.h.pixeldroid.fragments.feeds.initAdapter -import com.h.pixeldroid.objects.FeedContent +import com.h.pixeldroid.utils.BaseFragment +import com.h.pixeldroid.posts.feeds.initAdapter +import com.h.pixeldroid.utils.api.objects.FeedContent /** diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/AccountListFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/AccountListFragment.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/AccountListFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/AccountListFragment.kt index cea125c6..1eef92bd 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/AccountListFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/AccountListFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.accountLists +package com.h.pixeldroid.posts.feeds.uncachedFeeds.accountLists import android.annotation.SuppressLint import android.os.Bundle @@ -14,12 +14,12 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.h.pixeldroid.R -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.FeedViewModel -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.UncachedFeedFragment -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.ViewModelFactory -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_ID_TAG -import com.h.pixeldroid.objects.Account.Companion.FOLLOWERS_TAG +import com.h.pixeldroid.posts.feeds.uncachedFeeds.FeedViewModel +import com.h.pixeldroid.posts.feeds.uncachedFeeds.UncachedFeedFragment +import com.h.pixeldroid.posts.feeds.uncachedFeeds.ViewModelFactory +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Account.Companion.ACCOUNT_ID_TAG +import com.h.pixeldroid.utils.api.objects.Account.Companion.FOLLOWERS_TAG import kotlinx.android.synthetic.main.account_list_entry.view.* diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/FollowersContentRepository.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/FollowersContentRepository.kt similarity index 80% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/FollowersContentRepository.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/FollowersContentRepository.kt index 333259d4..72b6dd09 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/FollowersContentRepository.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/FollowersContentRepository.kt @@ -1,12 +1,12 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.accountLists +package com.h.pixeldroid.posts.feeds.uncachedFeeds.accountLists import androidx.paging.ExperimentalPagingApi import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.UncachedContentRepository -import com.h.pixeldroid.objects.Account +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.posts.feeds.uncachedFeeds.UncachedContentRepository +import com.h.pixeldroid.utils.api.objects.Account import kotlinx.coroutines.flow.Flow import javax.inject.Inject diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/FollowersPagingSource.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/FollowersPagingSource.kt similarity index 94% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/FollowersPagingSource.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/FollowersPagingSource.kt index aa93920b..204b3ae3 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/accountLists/FollowersPagingSource.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/accountLists/FollowersPagingSource.kt @@ -1,8 +1,8 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.accountLists +package com.h.pixeldroid.posts.feeds.uncachedFeeds.accountLists import androidx.paging.PagingSource -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.objects.Account +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.api.objects.Account import retrofit2.HttpException import java.io.IOException diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchAccountFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchAccountFragment.kt similarity index 82% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchAccountFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchAccountFragment.kt index dfe5de6b..c11fc275 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchAccountFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchAccountFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.search +package com.h.pixeldroid.posts.feeds.uncachedFeeds.search import android.os.Bundle import android.view.LayoutInflater @@ -6,10 +6,10 @@ import android.view.View import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.paging.ExperimentalPagingApi -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.* -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.accountLists.AccountAdapter -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Results +import com.h.pixeldroid.posts.feeds.uncachedFeeds.* +import com.h.pixeldroid.posts.feeds.uncachedFeeds.accountLists.AccountAdapter +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Results /** * Fragment to show a list of [Account]s, as a result of a search. diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchContentRepository.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchContentRepository.kt similarity index 75% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchContentRepository.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchContentRepository.kt index 4eec7ef7..e307cfb4 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchContentRepository.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchContentRepository.kt @@ -1,13 +1,13 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.search +package com.h.pixeldroid.posts.feeds.uncachedFeeds.search import androidx.paging.ExperimentalPagingApi import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.UncachedContentRepository -import com.h.pixeldroid.objects.FeedContent -import com.h.pixeldroid.objects.Results +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.posts.feeds.uncachedFeeds.UncachedContentRepository +import com.h.pixeldroid.utils.api.objects.FeedContent +import com.h.pixeldroid.utils.api.objects.Results import kotlinx.coroutines.flow.Flow import javax.inject.Inject @@ -15,7 +15,7 @@ import javax.inject.Inject * Repository class to perform searches * * The type argument [T] and the [Results.SearchType][type] argument should always - * be in agreement, e.g. if [T] is a [com.h.pixeldroid.objects.Account] then + * be in agreement, e.g. if [T] is a [com.h.pixeldroid.utils.api.objects.Account] then * [type] should be [Results.SearchType.accounts]. */ class SearchContentRepository @ExperimentalPagingApi diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchHashtagFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchHashtagFragment.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchHashtagFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchHashtagFragment.kt index b5a80463..203bd740 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchHashtagFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchHashtagFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.search +package com.h.pixeldroid.posts.feeds.uncachedFeeds.search import android.annotation.SuppressLint import android.os.Bundle @@ -12,12 +12,11 @@ import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.h.pixeldroid.R -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.UncachedFeedFragment -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.FeedViewModel -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.ViewModelFactory -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Results -import com.h.pixeldroid.objects.Tag +import com.h.pixeldroid.posts.feeds.uncachedFeeds.UncachedFeedFragment +import com.h.pixeldroid.posts.feeds.uncachedFeeds.FeedViewModel +import com.h.pixeldroid.posts.feeds.uncachedFeeds.ViewModelFactory +import com.h.pixeldroid.utils.api.objects.Results +import com.h.pixeldroid.utils.api.objects.Tag import kotlinx.android.synthetic.main.fragment_tags.view.* /** diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchPagingSource.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchPagingSource.kt similarity index 87% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchPagingSource.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchPagingSource.kt index 84d29369..1d62aba3 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchPagingSource.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchPagingSource.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.search +package com.h.pixeldroid.posts.feeds.uncachedFeeds.search import androidx.paging.PagingSource -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.objects.FeedContent -import com.h.pixeldroid.objects.Results +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.api.objects.FeedContent +import com.h.pixeldroid.utils.api.objects.Results import retrofit2.HttpException import java.io.IOException diff --git a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchPostsFragment.kt b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchPostsFragment.kt similarity index 91% rename from app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchPostsFragment.kt rename to app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchPostsFragment.kt index a7fbf6aa..ddb10d4a 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/feeds/uncachedFeeds/search/SearchPostsFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/feeds/uncachedFeeds/search/SearchPostsFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments.feeds.uncachedFeeds.search +package com.h.pixeldroid.posts.feeds.uncachedFeeds.search import android.os.Bundle import android.view.LayoutInflater @@ -11,10 +11,10 @@ import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.h.pixeldroid.R -import com.h.pixeldroid.fragments.StatusViewHolder -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.* -import com.h.pixeldroid.objects.Results -import com.h.pixeldroid.objects.Status +import com.h.pixeldroid.posts.StatusViewHolder +import com.h.pixeldroid.posts.feeds.uncachedFeeds.* +import com.h.pixeldroid.utils.api.objects.Results +import com.h.pixeldroid.utils.api.objects.Status /** * Fragment to show a list of [Status]es, as a result of a search. diff --git a/app/src/main/java/com/h/pixeldroid/FollowsActivity.kt b/app/src/main/java/com/h/pixeldroid/profile/FollowsActivity.kt similarity index 77% rename from app/src/main/java/com/h/pixeldroid/FollowsActivity.kt rename to app/src/main/java/com/h/pixeldroid/profile/FollowsActivity.kt index 6d2e0f1b..52f0017a 100644 --- a/app/src/main/java/com/h/pixeldroid/FollowsActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/profile/FollowsActivity.kt @@ -1,11 +1,13 @@ -package com.h.pixeldroid +package com.h.pixeldroid.profile import android.os.Bundle -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.accountLists.AccountListFragment -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_ID_TAG -import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_TAG -import com.h.pixeldroid.objects.Account.Companion.FOLLOWERS_TAG +import com.h.pixeldroid.R +import com.h.pixeldroid.posts.feeds.uncachedFeeds.accountLists.AccountListFragment +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Account.Companion.ACCOUNT_ID_TAG +import com.h.pixeldroid.utils.api.objects.Account.Companion.ACCOUNT_TAG +import com.h.pixeldroid.utils.api.objects.Account.Companion.FOLLOWERS_TAG +import com.h.pixeldroid.utils.BaseActivity class FollowsActivity : BaseActivity() { diff --git a/app/src/main/java/com/h/pixeldroid/ProfileActivity.kt b/app/src/main/java/com/h/pixeldroid/profile/ProfileActivity.kt similarity index 97% rename from app/src/main/java/com/h/pixeldroid/ProfileActivity.kt rename to app/src/main/java/com/h/pixeldroid/profile/ProfileActivity.kt index 28926a5d..9fab46c5 100644 --- a/app/src/main/java/com/h/pixeldroid/ProfileActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/profile/ProfileActivity.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid +package com.h.pixeldroid.profile import android.content.Intent import android.graphics.Typeface @@ -13,13 +13,15 @@ import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.h.pixeldroid.R import com.h.pixeldroid.adapters.ProfilePostsRecyclerViewAdapter -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Relationship -import com.h.pixeldroid.objects.Status -import com.h.pixeldroid.utils.HtmlUtils.Companion.parseHTMLText +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Relationship +import com.h.pixeldroid.utils.api.objects.Status +import com.h.pixeldroid.posts.parseHTMLText +import com.h.pixeldroid.utils.BaseActivity import com.h.pixeldroid.utils.ImageConverter import retrofit2.Call import retrofit2.Callback diff --git a/app/src/main/java/com/h/pixeldroid/adapters/ProfilePostsRecyclerViewAdapter.kt b/app/src/main/java/com/h/pixeldroid/profile/ProfilePostsRecyclerViewAdapter.kt similarity index 96% rename from app/src/main/java/com/h/pixeldroid/adapters/ProfilePostsRecyclerViewAdapter.kt rename to app/src/main/java/com/h/pixeldroid/profile/ProfilePostsRecyclerViewAdapter.kt index 80b8cd8a..5d757013 100644 --- a/app/src/main/java/com/h/pixeldroid/adapters/ProfilePostsRecyclerViewAdapter.kt +++ b/app/src/main/java/com/h/pixeldroid/profile/ProfilePostsRecyclerViewAdapter.kt @@ -7,9 +7,9 @@ import android.view.ViewGroup import android.widget.ImageView import androidx.appcompat.content.res.AppCompatResources.getDrawable import androidx.recyclerview.widget.RecyclerView -import com.h.pixeldroid.PostActivity +import com.h.pixeldroid.posts.PostActivity import com.h.pixeldroid.R -import com.h.pixeldroid.objects.Status +import com.h.pixeldroid.utils.api.objects.Status import com.h.pixeldroid.utils.ImageConverter.Companion.setSquareImageFromDrawable import com.h.pixeldroid.utils.ImageConverter.Companion.setSquareImageFromURL diff --git a/app/src/main/java/com/h/pixeldroid/SearchActivity.kt b/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchActivity.kt similarity index 88% rename from app/src/main/java/com/h/pixeldroid/SearchActivity.kt rename to app/src/main/java/com/h/pixeldroid/searchDiscover/SearchActivity.kt index cbf3277d..f55c8d6b 100644 --- a/app/src/main/java/com/h/pixeldroid/SearchActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchActivity.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid +package com.h.pixeldroid.searchDiscover import android.app.SearchManager import android.content.Intent @@ -8,10 +8,12 @@ import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.search.SearchAccountFragment -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.search.SearchHashtagFragment -import com.h.pixeldroid.fragments.feeds.uncachedFeeds.search.SearchPostsFragment -import com.h.pixeldroid.objects.Results +import com.h.pixeldroid.R +import com.h.pixeldroid.posts.feeds.uncachedFeeds.search.SearchAccountFragment +import com.h.pixeldroid.posts.feeds.uncachedFeeds.search.SearchHashtagFragment +import com.h.pixeldroid.posts.feeds.uncachedFeeds.search.SearchPostsFragment +import com.h.pixeldroid.utils.api.objects.Results +import com.h.pixeldroid.utils.BaseActivity class SearchActivity : BaseActivity() { diff --git a/app/src/main/java/com/h/pixeldroid/fragments/SearchDiscoverFragment.kt b/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/fragments/SearchDiscoverFragment.kt rename to app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt index 2193937a..44c24062 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/SearchDiscoverFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.searchDiscover import android.app.SearchManager import android.content.Context @@ -12,20 +12,17 @@ import android.widget.* import androidx.annotation.StringRes import androidx.appcompat.widget.SearchView import androidx.constraintlayout.motion.widget.MotionLayout -import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import com.h.pixeldroid.Pixeldroid -import com.h.pixeldroid.PostActivity import com.h.pixeldroid.R import com.h.pixeldroid.adapters.ProfilePostViewHolder -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.di.PixelfedAPIHolder -import com.h.pixeldroid.objects.DiscoverPost -import com.h.pixeldroid.objects.DiscoverPosts -import com.h.pixeldroid.objects.Status +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.api.objects.DiscoverPost +import com.h.pixeldroid.utils.api.objects.DiscoverPosts +import com.h.pixeldroid.utils.api.objects.Status +import com.h.pixeldroid.posts.PostActivity +import com.h.pixeldroid.utils.BaseFragment import com.h.pixeldroid.utils.ImageConverter import com.mikepenz.iconics.IconicsColor import com.mikepenz.iconics.IconicsDrawable @@ -33,11 +30,9 @@ import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial import com.mikepenz.iconics.utils.color import com.mikepenz.iconics.utils.paddingDp import com.mikepenz.iconics.utils.sizeDp -import kotlinx.android.synthetic.main.fragment_search.* import retrofit2.Call import retrofit2.Callback import retrofit2.Response -import javax.inject.Inject /** * This fragment lets you search and use Pixelfed's Discover feature diff --git a/app/src/main/java/com/h/pixeldroid/AboutActivity.kt b/app/src/main/java/com/h/pixeldroid/settings/AboutActivity.kt similarity index 82% rename from app/src/main/java/com/h/pixeldroid/AboutActivity.kt rename to app/src/main/java/com/h/pixeldroid/settings/AboutActivity.kt index 3ad0cd1e..43c5446b 100644 --- a/app/src/main/java/com/h/pixeldroid/AboutActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/settings/AboutActivity.kt @@ -1,7 +1,10 @@ -package com.h.pixeldroid +package com.h.pixeldroid.settings import android.content.Intent import android.os.Bundle +import com.h.pixeldroid.BuildConfig +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.BaseActivity import kotlinx.android.synthetic.main.activity_about.* class AboutActivity : BaseActivity() { diff --git a/app/src/main/java/com/h/pixeldroid/LicenseActivity.kt b/app/src/main/java/com/h/pixeldroid/settings/LicenseActivity.kt similarity index 81% rename from app/src/main/java/com/h/pixeldroid/LicenseActivity.kt rename to app/src/main/java/com/h/pixeldroid/settings/LicenseActivity.kt index 58c9d967..9bf6c639 100644 --- a/app/src/main/java/com/h/pixeldroid/LicenseActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/settings/LicenseActivity.kt @@ -1,6 +1,8 @@ -package com.h.pixeldroid +package com.h.pixeldroid.settings import android.os.Bundle +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.BaseActivity import kotlinx.android.synthetic.main.activity_licenses.* diff --git a/app/src/main/java/com/h/pixeldroid/SettingsActivity.kt b/app/src/main/java/com/h/pixeldroid/settings/SettingsActivity.kt similarity index 93% rename from app/src/main/java/com/h/pixeldroid/SettingsActivity.kt rename to app/src/main/java/com/h/pixeldroid/settings/SettingsActivity.kt index 9f3a226c..feeed674 100644 --- a/app/src/main/java/com/h/pixeldroid/SettingsActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/settings/SettingsActivity.kt @@ -1,11 +1,14 @@ -package com.h.pixeldroid +package com.h.pixeldroid.settings import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceManager -import com.h.pixeldroid.utils.ThemeUtils.Companion.setThemeFromPreferences +import com.h.pixeldroid.MainActivity +import com.h.pixeldroid.R +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.utils.setThemeFromPreferences class SettingsActivity : BaseActivity(), SharedPreferences.OnSharedPreferenceChangeListener { private var restartMainOnExit = false diff --git a/app/src/main/java/com/h/pixeldroid/BaseActivity.kt b/app/src/main/java/com/h/pixeldroid/utils/BaseActivity.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/BaseActivity.kt rename to app/src/main/java/com/h/pixeldroid/utils/BaseActivity.kt index c02fc558..61f4b358 100644 --- a/app/src/main/java/com/h/pixeldroid/BaseActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/BaseActivity.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid +package com.h.pixeldroid.utils import android.content.Context import android.content.res.Configuration @@ -7,8 +7,8 @@ import android.os.Build import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.preference.PreferenceManager -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.di.PixelfedAPIHolder +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.di.PixelfedAPIHolder import java.util.* import javax.inject.Inject @@ -21,7 +21,7 @@ open class BaseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - (this.application as Pixeldroid).getAppComponent().inject(this) + (this.application as PixelDroidApplication).getAppComponent().inject(this) } override fun attachBaseContext(base: Context) { diff --git a/app/src/main/java/com/h/pixeldroid/fragments/BaseFragment.kt b/app/src/main/java/com/h/pixeldroid/utils/BaseFragment.kt similarity index 65% rename from app/src/main/java/com/h/pixeldroid/fragments/BaseFragment.kt rename to app/src/main/java/com/h/pixeldroid/utils/BaseFragment.kt index fc9f6369..bb42777f 100644 --- a/app/src/main/java/com/h/pixeldroid/fragments/BaseFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/BaseFragment.kt @@ -1,10 +1,9 @@ -package com.h.pixeldroid.fragments +package com.h.pixeldroid.utils import android.os.Bundle import androidx.fragment.app.Fragment -import com.h.pixeldroid.Pixeldroid -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.di.PixelfedAPIHolder +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.di.PixelfedAPIHolder import javax.inject.Inject /** @@ -20,7 +19,7 @@ open class BaseFragment: Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - (requireActivity().application as Pixeldroid).getAppComponent().inject(this) + (requireActivity().application as PixelDroidApplication).getAppComponent().inject(this) } } diff --git a/app/src/main/java/com/h/pixeldroid/utils/DBUtils.kt b/app/src/main/java/com/h/pixeldroid/utils/DBUtils.kt deleted file mode 100644 index 83e62c07..00000000 --- a/app/src/main/java/com/h/pixeldroid/utils/DBUtils.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.h.pixeldroid.utils - -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.objects.Account -import com.h.pixeldroid.objects.Instance -import com.h.pixeldroid.utils.Utils.Companion.normalizeDomain - -class DBUtils { - companion object { - private const val MAX_NUMBER_OF_STORED_POSTS = 200 - - private fun normalizeOrNot(uri: String): String{ - return if(uri.startsWith("http://localhost")){ - uri - } else { - normalizeDomain(uri) - } - } - - fun addUser(db: AppDatabase, account: Account, instance_uri: String, activeUser: Boolean = true, - accessToken: String, refreshToken: String?, clientId: String, clientSecret: String) { - db.userDao().insertUser( - UserDatabaseEntity( - user_id = account.id!!, - //make sure not to normalize to https when localhost, to allow testing - instance_uri = normalizeOrNot(instance_uri), - username = account.username!!, - display_name = account.getDisplayName(), - avatar_static = account.avatar_static.orEmpty(), - isActive = activeUser, - accessToken = accessToken, - refreshToken = refreshToken, - clientId = clientId, - clientSecret = clientSecret - ) - ) - } - - fun storeInstance(db: AppDatabase, instance: Instance) { - val maxTootChars = instance.max_toot_chars?.toInt() ?: Instance.DEFAULT_MAX_TOOT_CHARS - val dbInstance = InstanceDatabaseEntity( - //make sure not to normalize to https when localhost, to allow testing - uri = normalizeOrNot(instance.uri.orEmpty()), - title = instance.title.orEmpty(), - max_toot_chars = maxTootChars, - thumbnail = instance.thumbnail.orEmpty() - ) - db.instanceDao().insertInstance(dbInstance) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/utils/HtmlUtils.kt b/app/src/main/java/com/h/pixeldroid/utils/HtmlUtils.kt deleted file mode 100644 index 2b2c73d2..00000000 --- a/app/src/main/java/com/h/pixeldroid/utils/HtmlUtils.kt +++ /dev/null @@ -1,126 +0,0 @@ -package com.h.pixeldroid.utils - -import android.content.Context -import android.os.Build -import android.text.Html -import android.text.SpannableStringBuilder -import android.text.Spanned -import android.text.style.ClickableSpan -import android.text.style.URLSpan -import android.util.Log -import android.view.View -import android.widget.Toast -import androidx.core.text.toSpanned -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.objects.Account.Companion.getAccountFromId -import com.h.pixeldroid.objects.Mention -import com.h.pixeldroid.utils.customSpans.ClickableSpanNoUnderline -import java.net.URI -import java.net.URISyntaxException -import java.util.Locale - - -class HtmlUtils { - companion object { - - fun fromHtml(html: String): Spanned { - val result: Spanned = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY) - } else { - Html.fromHtml(html) - } - return result.trim().toSpanned() - } - - fun getDomain(urlString: String?): String { - val uri: URI - try { - uri = URI(urlString!!) - } catch (e: URISyntaxException) { - return "" - } - val host: String = uri.host - return if (host.startsWith("www.")) { - host.substring(4) - } else { - host - } - } - - fun parseHTMLText( - text : String, - mentions: List?, - api : PixelfedAPI, - context: Context, - credential: String - ) : Spanned { - //Convert text to spannable - val content = fromHtml(text) - - //Retrive all links that should be made clickable - val builder = SpannableStringBuilder(content) - val urlSpans = content.getSpans(0, content.length, URLSpan::class.java) - - for(span in urlSpans) { - val start = builder.getSpanStart(span) - val end = builder.getSpanEnd(span) - val flags = builder.getSpanFlags(span) - val text = builder.subSequence(start, end) - var customSpan: ClickableSpan? = null - - //Handle hashtags - if (text[0] == '#') { - val tag = text.subSequence(1, text.length).toString() - customSpan = object : ClickableSpanNoUnderline() { - override fun onClick(widget: View) { - Toast.makeText(context, tag, Toast.LENGTH_SHORT).show() - } - - } - } - - //Handle mentions - if(text[0] == '@' && !mentions.isNullOrEmpty()) { - val accountUsername = text.subSequence(1, text.length).toString() - var id: String? = null - - //Go through all mentions stored in the status - for (mention in mentions) { - if (mention.username.toLowerCase(Locale.ROOT) - == accountUsername.toLowerCase(Locale.ROOT) - ) { - id = mention.id - - //Mentions can be of users in other domains - if (mention.url.contains(getDomain(span.url))) { - break - } - } - } - - //Check that we found a user for the given mention - if (id != null) { - val accountId: String = id - customSpan = object : ClickableSpanNoUnderline() { - override fun onClick(widget: View) { - Log.e("MENTION", "CLICKED") - //Retrieve the account for the given profile - getAccountFromId(accountId, api, context, credential) - } - } - } - } - - builder.removeSpan(span) - builder.setSpan(customSpan, start, end, flags) - - // Add zero-width space after links in end of line to fix its too large hitbox. - if (end >= builder.length || builder.subSequence(end, end + 1).toString() == "\n") { - builder.insert(end, "\u200B") - } - } - - return builder - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt b/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt index 81c8b761..9e80fde7 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt @@ -9,7 +9,6 @@ import androidx.fragment.app.FragmentActivity import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.h.pixeldroid.R -import java.io.File class ImageConverter { companion object { diff --git a/app/src/main/java/com/h/pixeldroid/Pixeldroid.kt b/app/src/main/java/com/h/pixeldroid/utils/PixelDroidApplication.kt similarity index 80% rename from app/src/main/java/com/h/pixeldroid/Pixeldroid.kt rename to app/src/main/java/com/h/pixeldroid/utils/PixelDroidApplication.kt index 9b6ea30b..06fa92f3 100644 --- a/app/src/main/java/com/h/pixeldroid/Pixeldroid.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/PixelDroidApplication.kt @@ -1,14 +1,13 @@ -package com.h.pixeldroid +package com.h.pixeldroid.utils import android.app.Application import androidx.preference.PreferenceManager -import com.h.pixeldroid.di.* -import com.h.pixeldroid.utils.ThemeUtils +import com.h.pixeldroid.utils.di.* import com.mikepenz.iconics.Iconics import org.ligi.tracedroid.TraceDroid -class Pixeldroid: Application() { +class PixelDroidApplication: Application() { private lateinit var mApplicationComponent: ApplicationComponent @@ -17,7 +16,7 @@ class Pixeldroid: Application() { TraceDroid.init(this) val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) - ThemeUtils.setThemeFromPreferences(sharedPreferences, resources) + setThemeFromPreferences(sharedPreferences, resources) mApplicationComponent = DaggerApplicationComponent .builder() .applicationModule(ApplicationModule(this)) diff --git a/app/src/main/java/com/h/pixeldroid/utils/PostUtils.kt b/app/src/main/java/com/h/pixeldroid/utils/PostUtils.kt deleted file mode 100644 index 5d8a5b0e..00000000 --- a/app/src/main/java/com/h/pixeldroid/utils/PostUtils.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.h.pixeldroid.utils - -import android.graphics.ColorMatrix - -abstract class PostUtils { - companion object { - - fun censorColorMatrix(): ColorMatrix { - val array: FloatArray = floatArrayOf( 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 1f, 0f ) - return ColorMatrix(array) - } - - fun uncensorColorMatrix(): ColorMatrix { - return ColorMatrix() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/utils/ThemeUtils.kt b/app/src/main/java/com/h/pixeldroid/utils/ThemeUtils.kt deleted file mode 100644 index 3a3e52bc..00000000 --- a/app/src/main/java/com/h/pixeldroid/utils/ThemeUtils.kt +++ /dev/null @@ -1,38 +0,0 @@ -package com.h.pixeldroid.utils - -import android.content.SharedPreferences -import android.content.res.Resources -import android.os.Build -import android.util.Log -import androidx.appcompat.app.AppCompatDelegate -import com.h.pixeldroid.R - -class ThemeUtils { - companion object { - /** - * @brief Updates the application's theme depending on the given preferences and resources - */ - fun setThemeFromPreferences(preferences: SharedPreferences, resources : Resources) { - val themes = resources.getStringArray(R.array.theme_values) - val theme = preferences.getString("theme", "") - //Set the theme - when(theme) { - //Light - themes[1] -> { - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) - } - //Dark - themes[2] -> { - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) - } - else -> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) - } else { - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY) - } - } - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/utils/Utils.kt b/app/src/main/java/com/h/pixeldroid/utils/Utils.kt index c7c81d40..a676e9b5 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/Utils.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/Utils.kt @@ -1,43 +1,47 @@ package com.h.pixeldroid.utils import android.content.Context +import android.content.SharedPreferences +import android.content.res.Resources import android.net.ConnectivityManager -import android.widget.TextView +import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import com.h.pixeldroid.R -import java.text.ParseException -import java.util.Date -class Utils { - companion object { - fun hasInternet(context: Context): Boolean { - val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - return cm.activeNetwork != null +fun hasInternet(context: Context): Boolean { + val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + return cm.activeNetwork != null +} + +fun normalizeDomain(domain: String): String { + return "https://" + domain + .replace("http://", "") + .replace("https://", "") + .trim(Char::isWhitespace) +} + + +/** + * @brief Updates the application's theme depending on the given preferences and resources + */ +fun setThemeFromPreferences(preferences: SharedPreferences, resources : Resources) { + val themes = resources.getStringArray(R.array.theme_values) + //Set the theme + when(preferences.getString("theme", "")) { + //Light + themes[1] -> { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) } - - fun normalizeDomain(domain: String): String { - return "https://" + domain - .replace("http://", "") - .replace("https://", "") - .trim(Char::isWhitespace) + //Dark + themes[2] -> { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) } - - - fun setTextViewFromISO8601(date: Date, textView: TextView, absoluteTime: Boolean, context: Context) { - val now = Date().time - - try { - val then = date.time - val formattedDate = android.text.format.DateUtils - .getRelativeTimeSpanString(then, now, - android.text.format.DateUtils.SECOND_IN_MILLIS, - android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE) - - textView.text = if(absoluteTime) context.getString(R.string.posted_on).format(date) - else "$formattedDate" - - } catch (e: ParseException) { - e.printStackTrace() + else -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY) } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/h/pixeldroid/api/PixelfedAPI.kt b/app/src/main/java/com/h/pixeldroid/utils/api/PixelfedAPI.kt similarity index 98% rename from app/src/main/java/com/h/pixeldroid/api/PixelfedAPI.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/PixelfedAPI.kt index c6a1b94c..13b2e385 100644 --- a/app/src/main/java/com/h/pixeldroid/api/PixelfedAPI.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/PixelfedAPI.kt @@ -1,6 +1,6 @@ -package com.h.pixeldroid.api +package com.h.pixeldroid.utils.api -import com.h.pixeldroid.objects.* +import com.h.pixeldroid.utils.api.objects.* import io.reactivex.Observable import io.reactivex.Single import okhttp3.MultipartBody @@ -249,10 +249,10 @@ interface PixelfedAPI { ): Call @GET("/api/v1/statuses/{id}") - fun getStatus( + suspend fun getStatus( @Header("Authorization") authorization: String, @Path("id") accountId : String - ): Call + ): Status @Multipart @POST("/api/v1/media") diff --git a/app/src/main/java/com/h/pixeldroid/objects/Account.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Account.kt similarity index 95% rename from app/src/main/java/com/h/pixeldroid/objects/Account.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Account.kt index e65ea18d..df46d8f4 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Account.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Account.kt @@ -1,11 +1,11 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import android.content.Context import android.content.Intent import android.util.Log import androidx.core.content.ContextCompat.startActivity -import com.h.pixeldroid.ProfileActivity -import com.h.pixeldroid.api.PixelfedAPI +import com.h.pixeldroid.profile.ProfileActivity +import com.h.pixeldroid.utils.api.PixelfedAPI import retrofit2.Call import retrofit2.Callback import retrofit2.Response diff --git a/app/src/main/java/com/h/pixeldroid/objects/Application.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Application.kt similarity index 87% rename from app/src/main/java/com/h/pixeldroid/objects/Application.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Application.kt index 6d86ed0e..7ee2aed6 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Application.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Application.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Attachment.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Attachment.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/objects/Attachment.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Attachment.kt index 37d0901d..4d9cc2a2 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Attachment.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Attachment.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Card.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Card.kt similarity index 93% rename from app/src/main/java/com/h/pixeldroid/objects/Card.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Card.kt index 95a87abb..32b2cc56 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Card.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Card.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/utils/api/objects/Context.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Context.kt new file mode 100644 index 00000000..244564fe --- /dev/null +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Context.kt @@ -0,0 +1,8 @@ +package com.h.pixeldroid.utils.api.objects + +import java.io.Serializable + +data class Context( + val ancestors : List, + val descendants : List +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/objects/DiscoverPost.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/DiscoverPost.kt similarity index 85% rename from app/src/main/java/com/h/pixeldroid/objects/DiscoverPost.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/DiscoverPost.kt index e681c69c..ff1f3b86 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/DiscoverPost.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/DiscoverPost.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/DiscoverPosts.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/DiscoverPosts.kt similarity index 75% rename from app/src/main/java/com/h/pixeldroid/objects/DiscoverPosts.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/DiscoverPosts.kt index e324cb85..1fdfb94f 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/DiscoverPosts.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/DiscoverPosts.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Emoji.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Emoji.kt similarity index 86% rename from app/src/main/java/com/h/pixeldroid/objects/Emoji.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Emoji.kt index e68b4b79..f1116e55 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Emoji.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Emoji.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/FeedContent.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/FeedContent.kt similarity index 77% rename from app/src/main/java/com/h/pixeldroid/objects/FeedContent.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/FeedContent.kt index ee4b9667..80ed4403 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/FeedContent.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/FeedContent.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects interface FeedContent { val id: String? diff --git a/app/src/main/java/com/h/pixeldroid/objects/Field.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Field.kt similarity index 56% rename from app/src/main/java/com/h/pixeldroid/objects/Field.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Field.kt index 828e3fda..8c85c2c1 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Field.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Field.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/History.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/History.kt similarity index 73% rename from app/src/main/java/com/h/pixeldroid/objects/History.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/History.kt index 811ca67a..c3564411 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/History.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/History.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects data class History( //Required attributes diff --git a/app/src/main/java/com/h/pixeldroid/objects/Instance.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Instance.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/objects/Instance.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Instance.kt index 3d9094e4..b8031b35 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Instance.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Instance.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects data class Instance ( val description: String?, diff --git a/app/src/main/java/com/h/pixeldroid/objects/Mention.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Mention.kt similarity index 81% rename from app/src/main/java/com/h/pixeldroid/objects/Mention.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Mention.kt index 4a4e468f..ce3812b3 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Mention.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Mention.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/NodeInfo.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/NodeInfo.kt similarity index 97% rename from app/src/main/java/com/h/pixeldroid/objects/NodeInfo.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/NodeInfo.kt index 51fb7567..32ff27e2 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/NodeInfo.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/NodeInfo.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects /* See https://nodeinfo.diaspora.software/schema.html and https://pixelfed.social/api/nodeinfo/2.0.json diff --git a/app/src/main/java/com/h/pixeldroid/objects/Notification.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Notification.kt similarity index 84% rename from app/src/main/java/com/h/pixeldroid/objects/Notification.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Notification.kt index a0caf2be..fc5bf9ce 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Notification.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Notification.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import androidx.room.Entity import androidx.room.ForeignKey import androidx.room.Index -import com.h.pixeldroid.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity import java.io.Serializable import java.util.Date @@ -26,9 +26,9 @@ https://docs.joinmastodon.org/entities/notification/ data class Notification( //Required attributes override val id: String, - val type: NotificationType, - val created_at: Date, //ISO 8601 Datetime - val account: Account, + val type: NotificationType?, + val created_at: Date?, //ISO 8601 Datetime + val account: Account?, //Optional attributes val status: Status? = null, diff --git a/app/src/main/java/com/h/pixeldroid/objects/Poll.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Poll.kt similarity index 56% rename from app/src/main/java/com/h/pixeldroid/objects/Poll.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Poll.kt index 7586a04e..2ccecacb 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Poll.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Poll.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Relationship.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Relationship.kt similarity index 90% rename from app/src/main/java/com/h/pixeldroid/objects/Relationship.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Relationship.kt index b436e626..82e4f951 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Relationship.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Relationship.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Report.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Report.kt similarity index 53% rename from app/src/main/java/com/h/pixeldroid/objects/Report.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Report.kt index 9d444f1e..f8e4630d 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Report.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Report.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Results.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Results.kt similarity index 81% rename from app/src/main/java/com/h/pixeldroid/objects/Results.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Results.kt index 618e49a6..30674273 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Results.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Results.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Source.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Source.kt similarity index 57% rename from app/src/main/java/com/h/pixeldroid/objects/Source.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Source.kt index 789ccac3..625532da 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Source.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Source.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Status.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Status.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/objects/Status.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Status.kt index 10546882..35d1712e 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Status.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Status.kt @@ -1,9 +1,10 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import android.app.DownloadManager import android.content.Context import android.content.Intent import android.database.Cursor +import android.graphics.ColorMatrix import android.graphics.ColorMatrixColorFilter import android.net.Uri import android.os.Environment @@ -14,17 +15,11 @@ import android.view.View.VISIBLE import android.widget.ImageView import android.widget.TextView import androidx.core.net.toUri -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index import com.google.android.material.snackbar.Snackbar import com.h.pixeldroid.R -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.utils.HtmlUtils.Companion.getDomain -import com.h.pixeldroid.utils.HtmlUtils.Companion.parseHTMLText -import com.h.pixeldroid.utils.PostUtils.Companion.censorColorMatrix -import com.h.pixeldroid.utils.PostUtils.Companion.uncensorColorMatrix +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.posts.getDomain +import com.h.pixeldroid.posts.parseHTMLText import kotlinx.android.synthetic.main.post_fragment.view.* import java.io.File import java.io.Serializable @@ -107,11 +102,13 @@ open class Status( // Set dark layout and warning message view.sensitiveWarning.visibility = VISIBLE - view.postPicture.colorFilter = ColorMatrixColorFilter(censorColorMatrix()) + val array = floatArrayOf(0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 1f, 0f) + val censorMatrix = ColorMatrix(array) + view.postPicture.colorFilter = ColorMatrixColorFilter(censorMatrix) fun uncensorPicture(view: View) { view.sensitiveWarning.visibility = GONE - view.postPicture.colorFilter = ColorMatrixColorFilter(uncensorColorMatrix()) + view.postPicture.clearColorFilter() } diff --git a/app/src/main/java/com/h/pixeldroid/objects/Tag.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Tag.kt similarity index 88% rename from app/src/main/java/com/h/pixeldroid/objects/Tag.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Tag.kt index 2414c252..1dcc8c9a 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Tag.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Tag.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects import java.io.Serializable diff --git a/app/src/main/java/com/h/pixeldroid/objects/Token.kt b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Token.kt similarity index 78% rename from app/src/main/java/com/h/pixeldroid/objects/Token.kt rename to app/src/main/java/com/h/pixeldroid/utils/api/objects/Token.kt index 8f08e538..8681d2fc 100644 --- a/app/src/main/java/com/h/pixeldroid/objects/Token.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/api/objects/Token.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.objects +package com.h.pixeldroid.utils.api.objects data class Token( val access_token: String?, diff --git a/app/src/main/java/com/h/pixeldroid/db/AppDatabase.kt b/app/src/main/java/com/h/pixeldroid/utils/db/AppDatabase.kt similarity index 52% rename from app/src/main/java/com/h/pixeldroid/db/AppDatabase.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/AppDatabase.kt index de554851..876f6bc2 100644 --- a/app/src/main/java/com/h/pixeldroid/db/AppDatabase.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/AppDatabase.kt @@ -1,17 +1,17 @@ -package com.h.pixeldroid.db +package com.h.pixeldroid.utils.db import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.TypeConverters -import com.h.pixeldroid.db.dao.* -import com.h.pixeldroid.db.dao.feedContent.NotificationDao -import com.h.pixeldroid.db.dao.feedContent.posts.HomePostDao -import com.h.pixeldroid.db.dao.feedContent.posts.PublicPostDao -import com.h.pixeldroid.db.entities.HomeStatusDatabaseEntity -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity -import com.h.pixeldroid.db.entities.PublicFeedStatusDatabaseEntity -import com.h.pixeldroid.db.entities.UserDatabaseEntity -import com.h.pixeldroid.objects.Notification +import com.h.pixeldroid.utils.db.dao.* +import com.h.pixeldroid.utils.db.dao.feedContent.NotificationDao +import com.h.pixeldroid.utils.db.dao.feedContent.posts.HomePostDao +import com.h.pixeldroid.utils.db.dao.feedContent.posts.PublicPostDao +import com.h.pixeldroid.utils.db.entities.HomeStatusDatabaseEntity +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.PublicFeedStatusDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.api.objects.Notification @Database(entities = [ InstanceDatabaseEntity::class, diff --git a/app/src/main/java/com/h/pixeldroid/db/Converters.kt b/app/src/main/java/com/h/pixeldroid/utils/db/Converters.kt similarity index 98% rename from app/src/main/java/com/h/pixeldroid/db/Converters.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/Converters.kt index c4c1cf5c..acf5aee0 100644 --- a/app/src/main/java/com/h/pixeldroid/db/Converters.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/Converters.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.db +package com.h.pixeldroid.utils.db import androidx.room.TypeConverter import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.h.pixeldroid.objects.* +import com.h.pixeldroid.utils.api.objects.* import java.util.* class Converters { diff --git a/app/src/main/java/com/h/pixeldroid/utils/db/DBUtils.kt b/app/src/main/java/com/h/pixeldroid/utils/db/DBUtils.kt new file mode 100644 index 00000000..506dc799 --- /dev/null +++ b/app/src/main/java/com/h/pixeldroid/utils/db/DBUtils.kt @@ -0,0 +1,46 @@ +package com.h.pixeldroid.utils.db + +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.api.objects.Account +import com.h.pixeldroid.utils.api.objects.Instance +import com.h.pixeldroid.utils.normalizeDomain + +private fun normalizeOrNot(uri: String): String{ + return if(uri.startsWith("http://localhost")){ + uri + } else { + normalizeDomain(uri) + } +} + +fun addUser(db: AppDatabase, account: Account, instance_uri: String, activeUser: Boolean = true, + accessToken: String, refreshToken: String?, clientId: String, clientSecret: String) { + db.userDao().insertUser( + UserDatabaseEntity( + user_id = account.id!!, + //make sure not to normalize to https when localhost, to allow testing + instance_uri = normalizeOrNot(instance_uri), + username = account.username!!, + display_name = account.getDisplayName(), + avatar_static = account.avatar_static.orEmpty(), + isActive = activeUser, + accessToken = accessToken, + refreshToken = refreshToken, + clientId = clientId, + clientSecret = clientSecret + ) + ) +} + +fun storeInstance(db: AppDatabase, instance: Instance) { + val maxTootChars = instance.max_toot_chars?.toInt() ?: Instance.DEFAULT_MAX_TOOT_CHARS + val dbInstance = InstanceDatabaseEntity( + //make sure not to normalize to https when localhost, to allow testing + uri = normalizeOrNot(instance.uri.orEmpty()), + title = instance.title.orEmpty(), + max_toot_chars = maxTootChars, + thumbnail = instance.thumbnail.orEmpty() + ) + db.instanceDao().insertInstance(dbInstance) +} \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/db/dao/InstanceDao.kt b/app/src/main/java/com/h/pixeldroid/utils/db/dao/InstanceDao.kt similarity index 76% rename from app/src/main/java/com/h/pixeldroid/db/dao/InstanceDao.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/dao/InstanceDao.kt index 971db061..dad64a5a 100644 --- a/app/src/main/java/com/h/pixeldroid/db/dao/InstanceDao.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/dao/InstanceDao.kt @@ -1,10 +1,10 @@ -package com.h.pixeldroid.db.dao +package com.h.pixeldroid.utils.db.dao import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.h.pixeldroid.db.entities.InstanceDatabaseEntity +import com.h.pixeldroid.utils.db.entities.InstanceDatabaseEntity @Dao interface InstanceDao { diff --git a/app/src/main/java/com/h/pixeldroid/db/dao/UserDao.kt b/app/src/main/java/com/h/pixeldroid/utils/db/dao/UserDao.kt similarity index 88% rename from app/src/main/java/com/h/pixeldroid/db/dao/UserDao.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/dao/UserDao.kt index 78cdace8..0837495f 100644 --- a/app/src/main/java/com/h/pixeldroid/db/dao/UserDao.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/dao/UserDao.kt @@ -1,10 +1,10 @@ -package com.h.pixeldroid.db.dao +package com.h.pixeldroid.utils.db.dao import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.h.pixeldroid.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity @Dao interface UserDao { diff --git a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/FeedContentDao.kt b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/FeedContentDao.kt similarity index 79% rename from app/src/main/java/com/h/pixeldroid/db/dao/feedContent/FeedContentDao.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/FeedContentDao.kt index 02221374..22673b29 100644 --- a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/FeedContentDao.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/FeedContentDao.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.db.dao.feedContent +package com.h.pixeldroid.utils.db.dao.feedContent import androidx.paging.PagingSource import androidx.room.Insert import androidx.room.OnConflictStrategy -import com.h.pixeldroid.objects.FeedContentDatabase +import com.h.pixeldroid.utils.api.objects.FeedContentDatabase interface FeedContentDao{ diff --git a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/NotificationDao.kt b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/NotificationDao.kt similarity index 86% rename from app/src/main/java/com/h/pixeldroid/db/dao/feedContent/NotificationDao.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/NotificationDao.kt index 31a9c9e5..b4fa57d2 100644 --- a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/NotificationDao.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/NotificationDao.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.db.dao.feedContent +package com.h.pixeldroid.utils.db.dao.feedContent import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Query -import com.h.pixeldroid.objects.Notification +import com.h.pixeldroid.utils.api.objects.Notification @Dao interface NotificationDao: FeedContentDao { diff --git a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/posts/HomePostDao.kt b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/posts/HomePostDao.kt similarity index 78% rename from app/src/main/java/com/h/pixeldroid/db/dao/feedContent/posts/HomePostDao.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/posts/HomePostDao.kt index df507de6..3f7b1b4b 100644 --- a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/posts/HomePostDao.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/posts/HomePostDao.kt @@ -1,10 +1,10 @@ -package com.h.pixeldroid.db.dao.feedContent.posts +package com.h.pixeldroid.utils.db.dao.feedContent.posts import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Query -import com.h.pixeldroid.db.dao.feedContent.FeedContentDao -import com.h.pixeldroid.db.entities.HomeStatusDatabaseEntity +import com.h.pixeldroid.utils.db.dao.feedContent.FeedContentDao +import com.h.pixeldroid.utils.db.entities.HomeStatusDatabaseEntity @Dao interface HomePostDao: FeedContentDao { diff --git a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/posts/PublicPostDao.kt b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/posts/PublicPostDao.kt similarity index 78% rename from app/src/main/java/com/h/pixeldroid/db/dao/feedContent/posts/PublicPostDao.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/posts/PublicPostDao.kt index a3755aea..6658ae40 100644 --- a/app/src/main/java/com/h/pixeldroid/db/dao/feedContent/posts/PublicPostDao.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/dao/feedContent/posts/PublicPostDao.kt @@ -1,10 +1,10 @@ -package com.h.pixeldroid.db.dao.feedContent.posts +package com.h.pixeldroid.utils.db.dao.feedContent.posts import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Query -import com.h.pixeldroid.db.dao.feedContent.FeedContentDao -import com.h.pixeldroid.db.entities.PublicFeedStatusDatabaseEntity +import com.h.pixeldroid.utils.db.dao.feedContent.FeedContentDao +import com.h.pixeldroid.utils.db.entities.PublicFeedStatusDatabaseEntity @Dao interface PublicPostDao: FeedContentDao { diff --git a/app/src/main/java/com/h/pixeldroid/db/entities/HomeStatusDatabaseEntity.kt b/app/src/main/java/com/h/pixeldroid/utils/db/entities/HomeStatusDatabaseEntity.kt similarity index 96% rename from app/src/main/java/com/h/pixeldroid/db/entities/HomeStatusDatabaseEntity.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/entities/HomeStatusDatabaseEntity.kt index 47c5b113..d0a3fcf6 100644 --- a/app/src/main/java/com/h/pixeldroid/db/entities/HomeStatusDatabaseEntity.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/entities/HomeStatusDatabaseEntity.kt @@ -1,10 +1,9 @@ -package com.h.pixeldroid.db.entities +package com.h.pixeldroid.utils.db.entities import androidx.room.Entity import androidx.room.ForeignKey -import androidx.room.Ignore import androidx.room.Index -import com.h.pixeldroid.objects.* +import com.h.pixeldroid.utils.api.objects.* import java.util.* @Entity( diff --git a/app/src/main/java/com/h/pixeldroid/db/entities/InstanceDatabaseEntity.kt b/app/src/main/java/com/h/pixeldroid/utils/db/entities/InstanceDatabaseEntity.kt similarity index 75% rename from app/src/main/java/com/h/pixeldroid/db/entities/InstanceDatabaseEntity.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/entities/InstanceDatabaseEntity.kt index 949e6bad..4b647b2a 100644 --- a/app/src/main/java/com/h/pixeldroid/db/entities/InstanceDatabaseEntity.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/entities/InstanceDatabaseEntity.kt @@ -1,8 +1,8 @@ -package com.h.pixeldroid.db.entities +package com.h.pixeldroid.utils.db.entities import androidx.room.Entity import androidx.room.PrimaryKey -import com.h.pixeldroid.objects.Instance +import com.h.pixeldroid.utils.api.objects.Instance @Entity(tableName = "instances") data class InstanceDatabaseEntity ( diff --git a/app/src/main/java/com/h/pixeldroid/db/entities/PublicFeedStatusDatabaseEntity.kt b/app/src/main/java/com/h/pixeldroid/utils/db/entities/PublicFeedStatusDatabaseEntity.kt similarity index 97% rename from app/src/main/java/com/h/pixeldroid/db/entities/PublicFeedStatusDatabaseEntity.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/entities/PublicFeedStatusDatabaseEntity.kt index 69fe20c1..f08b6eba 100644 --- a/app/src/main/java/com/h/pixeldroid/db/entities/PublicFeedStatusDatabaseEntity.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/entities/PublicFeedStatusDatabaseEntity.kt @@ -1,9 +1,9 @@ -package com.h.pixeldroid.db.entities +package com.h.pixeldroid.utils.db.entities import androidx.room.Entity import androidx.room.ForeignKey import androidx.room.Index -import com.h.pixeldroid.objects.* +import com.h.pixeldroid.utils.api.objects.* import java.util.* @Entity( diff --git a/app/src/main/java/com/h/pixeldroid/db/entities/UserDatabaseEntity.kt b/app/src/main/java/com/h/pixeldroid/utils/db/entities/UserDatabaseEntity.kt similarity index 94% rename from app/src/main/java/com/h/pixeldroid/db/entities/UserDatabaseEntity.kt rename to app/src/main/java/com/h/pixeldroid/utils/db/entities/UserDatabaseEntity.kt index fee41068..cd0e8b20 100644 --- a/app/src/main/java/com/h/pixeldroid/db/entities/UserDatabaseEntity.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/db/entities/UserDatabaseEntity.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.db.entities +package com.h.pixeldroid.utils.db.entities import androidx.room.Entity import androidx.room.ForeignKey diff --git a/app/src/main/java/com/h/pixeldroid/di/APIModule.kt b/app/src/main/java/com/h/pixeldroid/utils/di/APIModule.kt similarity index 89% rename from app/src/main/java/com/h/pixeldroid/di/APIModule.kt rename to app/src/main/java/com/h/pixeldroid/utils/di/APIModule.kt index 96cb0520..13939fbb 100644 --- a/app/src/main/java/com/h/pixeldroid/di/APIModule.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/di/APIModule.kt @@ -1,8 +1,8 @@ -package com.h.pixeldroid.di +package com.h.pixeldroid.utils.di -import com.h.pixeldroid.api.PixelfedAPI -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.db.entities.UserDatabaseEntity +import com.h.pixeldroid.utils.api.PixelfedAPI +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.db.entities.UserDatabaseEntity import dagger.Module import dagger.Provides import okhttp3.* @@ -24,7 +24,7 @@ class APIModule{ class TokenAuthenticator(val user: UserDatabaseEntity) : Authenticator { - val pixelfedAPI = PixelfedAPI.createFromUrl(user.instance_uri) + private val pixelfedAPI = PixelfedAPI.createFromUrl(user.instance_uri) override fun authenticate(route: Route?, response: Response): Request? { diff --git a/app/src/main/java/com/h/pixeldroid/di/ApplicationComponent.kt b/app/src/main/java/com/h/pixeldroid/utils/di/ApplicationComponent.kt similarity index 61% rename from app/src/main/java/com/h/pixeldroid/di/ApplicationComponent.kt rename to app/src/main/java/com/h/pixeldroid/utils/di/ApplicationComponent.kt index dddd7b11..253cd6e1 100644 --- a/app/src/main/java/com/h/pixeldroid/di/ApplicationComponent.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/di/ApplicationComponent.kt @@ -1,11 +1,11 @@ -package com.h.pixeldroid.di +package com.h.pixeldroid.utils.di import android.app.Application import android.content.Context -import com.h.pixeldroid.BaseActivity -import com.h.pixeldroid.Pixeldroid -import com.h.pixeldroid.db.AppDatabase -import com.h.pixeldroid.fragments.BaseFragment +import com.h.pixeldroid.utils.BaseActivity +import com.h.pixeldroid.utils.PixelDroidApplication +import com.h.pixeldroid.utils.db.AppDatabase +import com.h.pixeldroid.utils.BaseFragment import dagger.Component import javax.inject.Singleton @@ -13,7 +13,7 @@ import javax.inject.Singleton @Singleton @Component(modules = [ApplicationModule::class, DatabaseModule::class, APIModule::class]) interface ApplicationComponent { - fun inject(application: Pixeldroid?) + fun inject(application: PixelDroidApplication?) fun inject(activity: BaseActivity?) fun inject(feedFragment: BaseFragment) diff --git a/app/src/main/java/com/h/pixeldroid/di/ApplicationModule.kt b/app/src/main/java/com/h/pixeldroid/utils/di/ApplicationModule.kt similarity index 92% rename from app/src/main/java/com/h/pixeldroid/di/ApplicationModule.kt rename to app/src/main/java/com/h/pixeldroid/utils/di/ApplicationModule.kt index 3c85c01a..16bca60b 100644 --- a/app/src/main/java/com/h/pixeldroid/di/ApplicationModule.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/di/ApplicationModule.kt @@ -1,4 +1,4 @@ -package com.h.pixeldroid.di +package com.h.pixeldroid.utils.di import android.app.Application import android.content.Context diff --git a/app/src/main/java/com/h/pixeldroid/di/DatabaseModule.kt b/app/src/main/java/com/h/pixeldroid/utils/di/DatabaseModule.kt similarity index 86% rename from app/src/main/java/com/h/pixeldroid/di/DatabaseModule.kt rename to app/src/main/java/com/h/pixeldroid/utils/di/DatabaseModule.kt index 314091c5..d9fda875 100644 --- a/app/src/main/java/com/h/pixeldroid/di/DatabaseModule.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/di/DatabaseModule.kt @@ -1,8 +1,8 @@ -package com.h.pixeldroid.di +package com.h.pixeldroid.utils.di import android.content.Context import androidx.room.Room -import com.h.pixeldroid.db.AppDatabase +import com.h.pixeldroid.utils.db.AppDatabase import dagger.Module import dagger.Provides import javax.inject.Singleton diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 9c826928..85205912 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -9,7 +9,7 @@ + tools:context=".settings.AboutActivity"> + tools:context=".postCreation.camera.CameraActivity"> + tools:context=".profile.FollowsActivity"> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_photo_edit.xml b/app/src/main/res/layout/activity_photo_edit.xml index 614d260d..3fc786aa 100644 --- a/app/src/main/res/layout/activity_photo_edit.xml +++ b/app/src/main/res/layout/activity_photo_edit.xml @@ -5,7 +5,7 @@ android:id="@+id/coordinator_edit" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".PhotoEditActivity"> + tools:context=".postCreation.photoEdit.PhotoEditActivity"> - + tools:context=".posts.PostActivity"> diff --git a/app/src/main/res/layout/activity_post_creation.xml b/app/src/main/res/layout/activity_post_creation.xml index 1327bf56..bf379ec0 100644 --- a/app/src/main/res/layout/activity_post_creation.xml +++ b/app/src/main/res/layout/activity_post_creation.xml @@ -1,7 +1,6 @@ diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index cc594110..cea17c5e 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/profileRefreshLayout" - tools:context=".ProfileActivity"> + tools:context=".profile.ProfileActivity"> + tools:context=".posts.ReportActivity"> - - + diff --git a/app/src/main/res/layout/fragment_edit_image.xml b/app/src/main/res/layout/fragment_edit_image.xml index 8952926a..f1fd162d 100644 --- a/app/src/main/res/layout/fragment_edit_image.xml +++ b/app/src/main/res/layout/fragment_edit_image.xml @@ -8,7 +8,7 @@ android:orientation="vertical" android:paddingLeft="16dp" android:paddingRight="16dp" - tools:context=".fragments.EditImageFragment"> + tools:context=".postCreation.photoEdit.EditImageFragment"> + tools:context=".postCreation.photoEdit.FilterListFragment"> - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/post_fragment.xml b/app/src/main/res/layout/post_fragment.xml index 64259437..1b64a526 100644 --- a/app/src/main/res/layout/post_fragment.xml +++ b/app/src/main/res/layout/post_fragment.xml @@ -7,7 +7,7 @@ android:layout_marginTop="5dp" android:layout_marginBottom="5dp" xmlns:sparkbutton="http://schemas.android.com/apk/res-auto" - tools:context=".fragments.PostFragment"> + tools:context=".posts.PostFragment">