Started DMs
This commit is contained in:
parent
1956469b7d
commit
86b0fe1c60
@ -24,10 +24,14 @@
|
||||
android:name=".utils.PixelDroidApplication"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:localeConfig="@xml/locales_config"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:localeConfig="@xml/locales_config"
|
||||
android:theme="@style/BaseAppTheme">
|
||||
<activity
|
||||
android:name=".directMessages.ConversationsActivity"
|
||||
android:exported="false" />
|
||||
|
||||
<service
|
||||
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
|
||||
android:enabled="false"
|
||||
@ -40,22 +44,24 @@
|
||||
<activity
|
||||
android:name=".posts.AlbumActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme.ActionBar.Transparent"/>
|
||||
android:theme="@style/AppTheme.ActionBar.Transparent" />
|
||||
<activity
|
||||
android:name=".profile.EditProfileActivity"
|
||||
android:exported="false"/>
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".posts.MediaViewerActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:exported="false"
|
||||
android:theme="@style/BaseAppTheme.NoActionBar" />
|
||||
<activity android:name=".postCreation.camera.CameraActivity"/>
|
||||
<activity android:name=".postCreation.camera.CameraActivityShortcut"
|
||||
android:exported = "true"
|
||||
<activity android:name=".postCreation.camera.CameraActivity" />
|
||||
<activity
|
||||
android:name=".postCreation.camera.CameraActivityShortcut"
|
||||
android:exported="true"
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".MainActivity" />
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
</intent-filter>
|
||||
@ -67,8 +73,8 @@
|
||||
<activity
|
||||
android:name=".postCreation.PostCreationActivity"
|
||||
android:exported="true"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:theme="@style/BaseAppTheme.NoActionBar">
|
||||
android:theme="@style/BaseAppTheme.NoActionBar"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
@ -95,7 +101,7 @@
|
||||
android:name=".profile.ProfileActivity"
|
||||
android:screenOrientation="sensorPortrait"
|
||||
tools:ignore="LockedOrientationActivity" />
|
||||
<activity android:name=".profile.CollectionActivity"/>
|
||||
<activity android:name=".profile.CollectionActivity" />
|
||||
<activity
|
||||
android:name=".settings.SettingsActivity"
|
||||
android:label="@string/title_activity_settings2"
|
||||
@ -105,8 +111,8 @@
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/Theme.App.Starting"
|
||||
android:screenOrientation="sensorPortrait"
|
||||
android:theme="@style/Theme.App.Starting"
|
||||
android:windowSoftInputMode="adjustPan"
|
||||
tools:ignore="LockedOrientationActivity">
|
||||
<intent-filter>
|
||||
@ -118,7 +124,8 @@
|
||||
<meta-data
|
||||
android:name="android.app.default_searchable"
|
||||
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" />
|
||||
</activity>
|
||||
<activity
|
||||
@ -153,7 +160,7 @@
|
||||
android:name="android.app.searchable"
|
||||
android:resource="@xml/searchable" />
|
||||
</activity>
|
||||
<activity android:name=".searchDiscover.TrendingActivity"/>
|
||||
<activity android:name=".searchDiscover.TrendingActivity" />
|
||||
<activity
|
||||
android:name=".settings.AboutActivity"
|
||||
android:parentActivityName=".settings.SettingsActivity"
|
||||
|
@ -42,6 +42,7 @@ import com.mikepenz.materialdrawer.widget.AccountHeaderView
|
||||
import kotlinx.coroutines.launch
|
||||
import org.ligi.tracedroid.sending.sendTraceDroidStackTracesIfExist
|
||||
import org.pixeldroid.app.databinding.ActivityMainBinding
|
||||
import org.pixeldroid.app.directMessages.ConversationsActivity
|
||||
import org.pixeldroid.app.postCreation.camera.CameraFragment
|
||||
import org.pixeldroid.app.posts.NestedScrollableHost
|
||||
import org.pixeldroid.app.posts.feeds.cachedFeeds.CachedFeedFragment
|
||||
@ -226,6 +227,10 @@ class MainActivity : BaseThemedWithoutBarActivity() {
|
||||
nameRes = R.string.menu_settings
|
||||
iconicsIcon = GoogleMaterial.Icon.gmd_settings
|
||||
},
|
||||
primaryDrawerItem {
|
||||
nameRes = R.string.logout
|
||||
iconicsIcon = GoogleMaterial.Icon.gmd_close
|
||||
},
|
||||
primaryDrawerItem {
|
||||
nameRes = R.string.logout
|
||||
iconicsIcon = GoogleMaterial.Icon.gmd_close
|
||||
@ -235,6 +240,7 @@ class MainActivity : BaseThemedWithoutBarActivity() {
|
||||
1 -> launchActivity(ProfileActivity())
|
||||
2 -> launchActivity(SettingsActivity())
|
||||
3 -> logOut()
|
||||
4 -> launchActivity(ConversationsActivity())
|
||||
}
|
||||
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
|
||||
): 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")
|
||||
suspend fun verifyCredentials(
|
||||
//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.BaseFragment
|
||||
import dagger.Component
|
||||
import org.pixeldroid.app.directMessages.ui.main.ConversationsViewModel
|
||||
import org.pixeldroid.app.postCreation.PostCreationViewModel
|
||||
import org.pixeldroid.app.profile.EditProfileViewModel
|
||||
import org.pixeldroid.app.utils.notificationsWorker.NotificationsWorker
|
||||
@ -22,6 +23,7 @@ interface ApplicationComponent {
|
||||
fun inject(notificationsWorker: NotificationsWorker)
|
||||
fun inject(postCreationViewModel: PostCreationViewModel)
|
||||
fun inject(editProfileViewModel: EditProfileViewModel)
|
||||
fun inject(editProfileViewModel: ConversationsViewModel)
|
||||
|
||||
val context: Context?
|
||||
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