Started DMs
This commit is contained in:
parent
1956469b7d
commit
86b0fe1c60
@ -24,10 +24,14 @@
|
|||||||
android:name=".utils.PixelDroidApplication"
|
android:name=".utils.PixelDroidApplication"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
|
android:localeConfig="@xml/locales_config"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:localeConfig="@xml/locales_config"
|
|
||||||
android:theme="@style/BaseAppTheme">
|
android:theme="@style/BaseAppTheme">
|
||||||
|
<activity
|
||||||
|
android:name=".directMessages.ConversationsActivity"
|
||||||
|
android:exported="false" />
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
|
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
@ -50,12 +54,14 @@
|
|||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:theme="@style/BaseAppTheme.NoActionBar" />
|
android:theme="@style/BaseAppTheme.NoActionBar" />
|
||||||
<activity android:name=".postCreation.camera.CameraActivity" />
|
<activity android:name=".postCreation.camera.CameraActivity" />
|
||||||
<activity android:name=".postCreation.camera.CameraActivityShortcut"
|
<activity
|
||||||
|
android:name=".postCreation.camera.CameraActivityShortcut"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:parentActivityName=".MainActivity">
|
android:parentActivityName=".MainActivity">
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.support.PARENT_ACTIVITY"
|
android:name="android.support.PARENT_ACTIVITY"
|
||||||
android:value=".MainActivity" />
|
android:value=".MainActivity" />
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
@ -67,8 +73,8 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".postCreation.PostCreationActivity"
|
android:name=".postCreation.PostCreationActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:theme="@style/BaseAppTheme.NoActionBar"
|
||||||
android:theme="@style/BaseAppTheme.NoActionBar">
|
android:windowSoftInputMode="adjustResize">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||||
<action android:name="android.intent.action.SEND" />
|
<action android:name="android.intent.action.SEND" />
|
||||||
@ -105,8 +111,8 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:theme="@style/Theme.App.Starting"
|
|
||||||
android:screenOrientation="sensorPortrait"
|
android:screenOrientation="sensorPortrait"
|
||||||
|
android:theme="@style/Theme.App.Starting"
|
||||||
android:windowSoftInputMode="adjustPan"
|
android:windowSoftInputMode="adjustPan"
|
||||||
tools:ignore="LockedOrientationActivity">
|
tools:ignore="LockedOrientationActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
@ -118,7 +124,8 @@
|
|||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.app.default_searchable"
|
android:name="android.app.default_searchable"
|
||||||
android:value="org.pixeldroid.app.searchDiscover.SearchActivity" />
|
android:value="org.pixeldroid.app.searchDiscover.SearchActivity" />
|
||||||
<meta-data android:name="android.app.shortcuts"
|
<meta-data
|
||||||
|
android:name="android.app.shortcuts"
|
||||||
android:resource="@xml/shortcuts" />
|
android:resource="@xml/shortcuts" />
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
|
@ -42,6 +42,7 @@ import com.mikepenz.materialdrawer.widget.AccountHeaderView
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.ligi.tracedroid.sending.sendTraceDroidStackTracesIfExist
|
import org.ligi.tracedroid.sending.sendTraceDroidStackTracesIfExist
|
||||||
import org.pixeldroid.app.databinding.ActivityMainBinding
|
import org.pixeldroid.app.databinding.ActivityMainBinding
|
||||||
|
import org.pixeldroid.app.directMessages.ConversationsActivity
|
||||||
import org.pixeldroid.app.postCreation.camera.CameraFragment
|
import org.pixeldroid.app.postCreation.camera.CameraFragment
|
||||||
import org.pixeldroid.app.posts.NestedScrollableHost
|
import org.pixeldroid.app.posts.NestedScrollableHost
|
||||||
import org.pixeldroid.app.posts.feeds.cachedFeeds.CachedFeedFragment
|
import org.pixeldroid.app.posts.feeds.cachedFeeds.CachedFeedFragment
|
||||||
@ -226,6 +227,10 @@ class MainActivity : BaseThemedWithoutBarActivity() {
|
|||||||
nameRes = R.string.menu_settings
|
nameRes = R.string.menu_settings
|
||||||
iconicsIcon = GoogleMaterial.Icon.gmd_settings
|
iconicsIcon = GoogleMaterial.Icon.gmd_settings
|
||||||
},
|
},
|
||||||
|
primaryDrawerItem {
|
||||||
|
nameRes = R.string.logout
|
||||||
|
iconicsIcon = GoogleMaterial.Icon.gmd_close
|
||||||
|
},
|
||||||
primaryDrawerItem {
|
primaryDrawerItem {
|
||||||
nameRes = R.string.logout
|
nameRes = R.string.logout
|
||||||
iconicsIcon = GoogleMaterial.Icon.gmd_close
|
iconicsIcon = GoogleMaterial.Icon.gmd_close
|
||||||
@ -235,6 +240,7 @@ class MainActivity : BaseThemedWithoutBarActivity() {
|
|||||||
1 -> launchActivity(ProfileActivity())
|
1 -> launchActivity(ProfileActivity())
|
||||||
2 -> launchActivity(SettingsActivity())
|
2 -> launchActivity(SettingsActivity())
|
||||||
3 -> logOut()
|
3 -> logOut()
|
||||||
|
4 -> launchActivity(ConversationsActivity())
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.pixeldroid.app.directMessages
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import android.os.Bundle
|
||||||
|
import org.pixeldroid.app.R
|
||||||
|
import org.pixeldroid.app.directMessages.ui.main.ConversationsFragment
|
||||||
|
|
||||||
|
class ConversationsActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.activity_conversations)
|
||||||
|
if (savedInstanceState == null) {
|
||||||
|
supportFragmentManager.beginTransaction()
|
||||||
|
.replace(R.id.container, ConversationsFragment.newInstance())
|
||||||
|
.commitNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package org.pixeldroid.app.directMessages.ui.main
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import org.pixeldroid.app.R
|
||||||
|
|
||||||
|
class ConversationsFragment : Fragment() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun newInstance() = ConversationsFragment()
|
||||||
|
}
|
||||||
|
|
||||||
|
private lateinit var viewModel: ConversationsViewModel
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
viewModel = ViewModelProvider(this).get(ConversationsViewModel::class.java)
|
||||||
|
// TODO: Use the ViewModel to watch the variable containing DM data and show it
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View {
|
||||||
|
return inflater.inflate(R.layout.fragment_main, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package org.pixeldroid.app.directMessages.ui.main
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import androidx.lifecycle.AndroidViewModel
|
||||||
|
import org.pixeldroid.app.utils.PixelDroidApplication
|
||||||
|
import org.pixeldroid.app.utils.di.PixelfedAPIHolder
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class ConversationsViewModel(application: Application) : AndroidViewModel(application) {
|
||||||
|
// TODO: Implement the ViewModel
|
||||||
|
// API calls for DM, store results in some variable here
|
||||||
|
@Inject
|
||||||
|
lateinit var apiHolder: PixelfedAPIHolder
|
||||||
|
|
||||||
|
init {
|
||||||
|
(application as PixelDroidApplication).getAppComponent().inject(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun loadConversations() {
|
||||||
|
val api = apiHolder.api ?: apiHolder.setToCurrentUser()
|
||||||
|
val conversations = api.viewAllConversations()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -290,6 +290,24 @@ interface PixelfedAPI {
|
|||||||
@Query("account_id") account_id: Boolean? = null
|
@Query("account_id") account_id: Boolean? = null
|
||||||
): List<Notification>
|
): List<Notification>
|
||||||
|
|
||||||
|
@GET("/api/v1/conversations")
|
||||||
|
suspend fun viewAllConversations(
|
||||||
|
@Query("max_id") max_id: String? = null,
|
||||||
|
@Query("since_id") since_id: String? = null,
|
||||||
|
@Query("min_id") min_id: String? = null,
|
||||||
|
@Query("limit") limit: String? = null
|
||||||
|
): List<Conversation>
|
||||||
|
|
||||||
|
@DELETE("/api/v1/conversations/{id}")
|
||||||
|
suspend fun deleteConversation(
|
||||||
|
@Path("id") id: String
|
||||||
|
)
|
||||||
|
|
||||||
|
@POST("/api/v1/conversations/{id}/read")
|
||||||
|
suspend fun markConversationAsRead(
|
||||||
|
@Path("id") id: String
|
||||||
|
): Conversation
|
||||||
|
|
||||||
@GET("/api/v1/accounts/verify_credentials")
|
@GET("/api/v1/accounts/verify_credentials")
|
||||||
suspend fun verifyCredentials(
|
suspend fun verifyCredentials(
|
||||||
//The authorization header needs to be of the form "Bearer <token>"
|
//The authorization header needs to be of the form "Bearer <token>"
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package org.pixeldroid.app.utils.api.objects
|
||||||
|
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
/*
|
||||||
|
Represents a conversation.
|
||||||
|
https://docs.joinmastodon.org/entities/Conversation/
|
||||||
|
*/
|
||||||
|
|
||||||
|
data class Conversation(
|
||||||
|
//Base attributes
|
||||||
|
override val id: String?,
|
||||||
|
val unread: Boolean? = true,
|
||||||
|
val accounts: List<Account>? = null,
|
||||||
|
val last_statuses: Status? = null
|
||||||
|
) : Serializable, FeedContent
|
@ -7,6 +7,7 @@ import org.pixeldroid.app.utils.PixelDroidApplication
|
|||||||
import org.pixeldroid.app.utils.db.AppDatabase
|
import org.pixeldroid.app.utils.db.AppDatabase
|
||||||
import org.pixeldroid.app.utils.BaseFragment
|
import org.pixeldroid.app.utils.BaseFragment
|
||||||
import dagger.Component
|
import dagger.Component
|
||||||
|
import org.pixeldroid.app.directMessages.ui.main.ConversationsViewModel
|
||||||
import org.pixeldroid.app.postCreation.PostCreationViewModel
|
import org.pixeldroid.app.postCreation.PostCreationViewModel
|
||||||
import org.pixeldroid.app.profile.EditProfileViewModel
|
import org.pixeldroid.app.profile.EditProfileViewModel
|
||||||
import org.pixeldroid.app.utils.notificationsWorker.NotificationsWorker
|
import org.pixeldroid.app.utils.notificationsWorker.NotificationsWorker
|
||||||
@ -22,6 +23,7 @@ interface ApplicationComponent {
|
|||||||
fun inject(notificationsWorker: NotificationsWorker)
|
fun inject(notificationsWorker: NotificationsWorker)
|
||||||
fun inject(postCreationViewModel: PostCreationViewModel)
|
fun inject(postCreationViewModel: PostCreationViewModel)
|
||||||
fun inject(editProfileViewModel: EditProfileViewModel)
|
fun inject(editProfileViewModel: EditProfileViewModel)
|
||||||
|
fun inject(editProfileViewModel: ConversationsViewModel)
|
||||||
|
|
||||||
val context: Context?
|
val context: Context?
|
||||||
val application: Application?
|
val application: Application?
|
||||||
|
7
app/src/main/res/layout/activity_conversations.xml
Normal file
7
app/src/main/res/layout/activity_conversations.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".ConversationsActivity" />
|
20
app/src/main/res/layout/fragment_main.xml
Normal file
20
app/src/main/res/layout/fragment_main.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/conversations"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".ui.main.ConversationsFragment">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/message"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="ConversationsFragment"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user