Commit 9f9c2ace authored by aniket's avatar aniket

minor changes in the code to add members

parent 59c55366
......@@ -2,7 +2,11 @@ package chat.rocket.android.createChannel.addMembers.di
import android.arch.lifecycle.LifecycleOwner
import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.createChannel.addMembers.presentation.AddMembersView
import chat.rocket.android.createChannel.addMembers.ui.AddMembersActivity
import chat.rocket.android.createChannel.presentation.CreateNewChannelView
import chat.rocket.android.createChannel.ui.CreateNewChannelActivity
import chat.rocket.android.dagger.scope.PerActivity
import dagger.Module
import dagger.Provides
import kotlinx.coroutines.experimental.Job
......@@ -14,6 +18,12 @@ class AddMembersModule {
return activity
}
@Provides
@PerActivity
fun addMembersView(activity: AddMembersActivity): AddMembersView{
return activity
}
@Provides
fun provideCancelStrategy(owner: LifecycleOwner, jobs: Job): CancelStrategy {
return CancelStrategy(owner, jobs)
......
package chat.rocket.android.createChannel.addMembers.di
import chat.rocket.android.createChannel.addMembers.ui.AddMembersActivity
import dagger.Module
import dagger.android.ContributesAndroidInjector
@Module
abstract class AddMembersProvider {
@ContributesAndroidInjector(modules = [AddMembersModule::class])
abstract fun provideNewChannelActivity(): AddMembersActivity
}
\ No newline at end of file
package chat.rocket.android.createChannel.addMembers.presentation
class AddMembersPresenter {
import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.members.viewmodel.MemberViewModelMapper
import chat.rocket.android.server.domain.GetCurrentServerInteractor
import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.util.extensions.launchUI
import chat.rocket.android.util.retryIO
import chat.rocket.common.RocketChatException
import chat.rocket.core.RocketChatClient
import chat.rocket.core.internal.rest.queryUsers
import javax.inject.Inject
class AddMembersPresenter @Inject constructor(
private val view: AddMembersView,
private val strategy: CancelStrategy,
private val serverInteractor: GetCurrentServerInteractor,
private val mapper: MemberViewModelMapper,
factory: RocketChatClientFactory
) {
val serverUrl: String? = serverInteractor.get()
private val client = if (serverUrl != null) factory.create(serverUrl) else null
fun queryUsersFromRegex(queryParam: String) {
if (client != null) {
launchUI(strategy) {
try {
val allMembers = retryIO("queryUsers($queryParam)") {
client.queryUsers(queryParam)
}
val memberViewModelMapper = mapper.mapToViewModelList(allMembers.result)
} catch (ex: RocketChatException) {
}
}
}
}
}
\ No newline at end of file
......@@ -2,12 +2,18 @@ package chat.rocket.android.createChannel.addMembers.ui
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.SearchView
import chat.rocket.android.R
import chat.rocket.android.createChannel.addMembers.presentation.AddMembersPresenter
import chat.rocket.android.createChannel.addMembers.presentation.AddMembersView
import com.jakewharton.rxbinding2.widget.RxTextView
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.subjects.BehaviorSubject
import kotlinx.android.synthetic.main.activity_add_members.*
import kotlinx.android.synthetic.main.activity_create_new_channel.*
import kotlinx.android.synthetic.main.layout_toolbar.*
import java.util.concurrent.TimeUnit
import javax.inject.Inject
class AddMembersActivity : AppCompatActivity(), AddMembersView {
......@@ -37,9 +43,20 @@ class AddMembersActivity : AppCompatActivity(), AddMembersView {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setUpToolBar()
observableFromSearchView(search_view)
.debounce(300, TimeUnit.MILLISECONDS)
.filter { item -> item.length > 1 }
.observeOn(AndroidSchedulers.mainThread())
.subscribe { query ->
{
//search for elements on the basis of query obtained and also add a function in
// login presenter
}
}
}
private fun setUpToolBar(){
private fun setUpToolBar() {
toolbar_title.text = getString(R.string.title_add_members)
toolbar_action_text.text = getString(R.string.action_select_members)
......@@ -52,4 +69,23 @@ class AddMembersActivity : AppCompatActivity(), AddMembersView {
toolbar_action_text.alpha = 1.0f
}
}
private fun observableFromSearchView(searchView: SearchView): Observable<String> {
val observableSubject: BehaviorSubject<String> = BehaviorSubject.create()
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
observableSubject.onComplete()
return true
}
override fun onQueryTextChange(newText: String): Boolean {
if (!newText.isEmpty()) {
observableSubject.onNext(newText)
}
return true
}
})
return observableSubject
}
}
\ No newline at end of file
......@@ -14,17 +14,25 @@ import chat.rocket.core.model.Room
import javax.inject.Inject
class CreateNewChannelPresenter @Inject constructor(private val view: CreateNewChannelView,
private val strategy: CancelStrategy,
private val serverInteractor: GetCurrentServerInteractor,
factory: RocketChatClientFactory) {
class CreateNewChannelPresenter @Inject constructor(
private val view: CreateNewChannelView,
private val strategy: CancelStrategy,
private val serverInteractor: GetCurrentServerInteractor,
factory: RocketChatClientFactory
) {
private val client: RocketChatClient = factory.create(serverInteractor.get()!!)
fun createNewChannel(roomType: RoomType, channelName: String, usersList: List<String>, readOnly: Boolean) {
fun createNewChannel(
roomType: RoomType,
channelName: String,
usersList: List<String>,
readOnly: Boolean
) {
launchUI(strategy) {
view.showLoading()
try {
val channelCreated:Room? = client.createChannel(roomType, channelName, usersList, readOnly)
val channelCreated: Room? =
client.createChannel(roomType, channelName, usersList, readOnly)
view.showChannelCreatedSuccessfullyMessage()
} catch (exception: RocketChatException) {
exception.message?.let {
......
......@@ -20,10 +20,19 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar_layout">
<EditText
android:id="@+id/search_edit_text"
<android.support.design.chip.ChipGroup
android:id="@+id/members_chips"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:chipSpacing="2dp"
>
</android.support.design.chip.ChipGroup>
<SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/members_chips"
android:layout_margin="8dp"
android:backgroundTint="@color/colorLightTheme"
android:hint="@string/msg_search"/>
......@@ -33,7 +42,7 @@
android:layout_width="match_parent"
android:layout_height="0.2dp"
android:background="@color/colorDividerMessageComposer"
app:layout_constraintTop_toBottomOf="@id/search_edit_text" />
app:layout_constraintTop_toBottomOf="@id/search_view" />
<android.support.v7.widget.RecyclerView
android:id="@+id/search_results"
......
ext {
versions = [
java : JavaVersion.VERSION_1_8,
compileSdk : 27,
targetSdk : 27,
compileSdk : "android-P",
targetSdk : 28,
buildTools : '27.0.3',
kotlin : '1.2.41',
coroutine : '0.22.5',
dokka : '0.9.16',
// Main dependencies
support : '27.1.1',
support : '28.0.0-alpha1',
constraintLayout : '1.1.0',
androidKtx : '0.3',
dagger : '2.14.1',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment