Skip to content

Commit

Permalink
added session expire popup on task detail screen (#289)
Browse files Browse the repository at this point in the history
  • Loading branch information
aman-alfresco committed Aug 17, 2023
1 parent af7a00c commit c067365
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 53 deletions.
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@
<activity
android:name=".activity.MoveActivity"
android:windowSoftInputMode="adjustNothing" />

<activity
android:name="com.alfresco.content.app.activity.TaskViewerActivity"
android:configChanges="orientation|screenSize"
android:exported="false" />

</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package com.alfresco.content.app.activity

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.NavHostFragment
import com.airbnb.mvrx.InternalMavericksApi
import com.airbnb.mvrx.MavericksView
import com.airbnb.mvrx.withState
import com.alfresco.auth.activity.LoginViewModel
import com.alfresco.content.actions.Action
import com.alfresco.content.activityViewModel
import com.alfresco.content.browse.R
import com.alfresco.content.browse.databinding.ActivityTaskViewerBinding
import com.alfresco.content.common.BaseActivity
import com.alfresco.content.session.SessionManager
import com.alfresco.content.viewer.ViewerArgs
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.lang.ref.WeakReference

/**
* Marked as TaskViewerActivity class
*/
class TaskViewerActivity : BaseActivity(), MavericksView {

private lateinit var binding: ActivityTaskViewerBinding

@OptIn(InternalMavericksApi::class)
private val viewModel: MainActivityViewModel by activityViewModel()
private var signedOutDialog = WeakReference<AlertDialog>(null)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityTaskViewerBinding.inflate(layoutInflater)
setContentView(binding.root)
configureNav()
setupActionToasts()
}

private fun configureNav() {
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
val inflater = navController.navInflater
val graph = inflater.inflate(R.navigation.nav_task_paths)
navController.setGraph(graph, intent.extras)
}

override fun invalidate() = withState(viewModel) { state ->
if (state.requiresReLogin) {
if (state.isOnline) {
showSignedOutPrompt()
}
}
}

private fun showSignedOutPrompt() {
val oldDialog = signedOutDialog.get()
if (oldDialog != null && oldDialog.isShowing) return
val dialog = MaterialAlertDialogBuilder(this).setTitle(resources.getString(com.alfresco.content.app.R.string.auth_signed_out_title))
.setMessage(resources.getString(com.alfresco.content.app.R.string.auth_signed_out_subtitle))
.setNegativeButton(resources.getString(com.alfresco.content.app.R.string.sign_out_confirmation_negative), null)
.setPositiveButton(resources.getString(com.alfresco.content.app.R.string.auth_basic_sign_in_button)) { _, _ ->
navigateToReLogin()
}.show()
signedOutDialog = WeakReference(dialog)
}

private fun navigateToReLogin() {
val i = Intent(this, LoginActivity::class.java)
val acc = SessionManager.requireSession.account
i.putExtra(LoginViewModel.EXTRA_IS_EXTENSION, false)
i.putExtra(LoginViewModel.EXTRA_ENDPOINT, acc.serverUrl)
i.putExtra(LoginViewModel.EXTRA_AUTH_TYPE, acc.authType)
i.putExtra(LoginViewModel.EXTRA_AUTH_CONFIG, acc.authConfig)
i.putExtra(LoginViewModel.EXTRA_AUTH_STATE, acc.authState)
i.putExtra(ViewerArgs.ID_KEY, intent.extras?.getString(ViewerArgs.ID_KEY, ""))
i.putExtra(ViewerArgs.MODE_KEY, intent.extras?.getString(ViewerArgs.MODE_KEY, ""))
i.putExtra(ViewerArgs.KEY_FOLDER, intent.extras?.getBoolean(ViewerArgs.KEY_FOLDER, false))
startActivity(i)
}

private fun setupActionToasts() = Action.showActionToasts(
lifecycleScope,
binding.root,
binding.bottomView,
)
}
5 changes: 0 additions & 5 deletions browse/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<application>
<activity
android:name=".tasks.TaskViewerActivity"
android:configChanges="orientation|screenSize"
android:exported="false" />

<activity
android:name=".processes.ProcessDetailActivity"
android:configChanges="orientation|screenSize"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import com.airbnb.mvrx.withState
import com.alfresco.content.browse.R
import com.alfresco.content.browse.databinding.FragmentTaskStatusBinding
import com.alfresco.content.browse.processes.ProcessDetailActivity
import com.alfresco.content.browse.tasks.TaskViewerActivity
import com.alfresco.content.browse.tasks.detail.TaskDetailViewModel
import com.alfresco.content.browse.tasks.detail.isAssigneeAndLoggedInSame
import com.alfresco.content.browse.tasks.detail.isTaskCompleted
import com.alfresco.content.common.BaseActivity
import com.alfresco.content.component.ComponentBuilder
import com.alfresco.content.component.ComponentData
import com.alfresco.content.component.ComponentMetaData
Expand Down Expand Up @@ -68,7 +68,7 @@ class TaskStatusFragment : Fragment(), MavericksView {
var instanceActivity: AppCompatActivity? = null
when (requireActivity()) {
is ProcessDetailActivity -> instanceActivity = (requireActivity() as ProcessDetailActivity)
is TaskViewerActivity -> instanceActivity = (requireActivity() as TaskViewerActivity)
is BaseActivity -> instanceActivity = (requireActivity() as BaseActivity)
}
instanceActivity?.apply {
setSupportActionBar(binding.toolbar)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ import com.alfresco.content.browse.R
import com.alfresco.content.browse.databinding.FragmentTaskDetailBinding
import com.alfresco.content.browse.databinding.ViewListCommentRowBinding
import com.alfresco.content.browse.tasks.BaseDetailFragment
import com.alfresco.content.browse.tasks.TaskViewerActivity
import com.alfresco.content.browse.tasks.attachments.listViewAttachmentRow
import com.alfresco.content.common.BaseActivity
import com.alfresco.content.common.EntryListener
import com.alfresco.content.component.ComponentBuilder
import com.alfresco.content.component.ComponentData
Expand Down Expand Up @@ -87,7 +87,7 @@ class TaskDetailFragment : BaseDetailFragment(), MavericksView, EntryListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
AnalyticsManager().screenViewEvent(if (viewModel.isWorkflowTask) PageView.WorkflowTaskView else PageView.TaskView)
(requireActivity() as TaskViewerActivity).setSupportActionBar(binding.toolbar)
(requireActivity() as BaseActivity).setSupportActionBar(binding.toolbar)
withState(viewModel) { state ->
if (!viewModel.isTaskCompleted(state)) {
setHasOptionsMenu(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.airbnb.mvrx.withState
import com.alfresco.content.actions.ActionCreateTask
import com.alfresco.content.browse.R
import com.alfresco.content.browse.processes.ProcessDetailActivity
import com.alfresco.content.browse.tasks.TaskViewerActivity
import com.alfresco.content.component.ComponentBuilder
import com.alfresco.content.component.ComponentData
import com.alfresco.content.component.ComponentMetaData
Expand Down Expand Up @@ -190,9 +189,11 @@ class TasksFragment : TaskListFragment<TasksViewModel, TasksViewState>() {
) = continuation.resume(ComponentMetaData(name = name, query = query, queryMap = queryMap))

override fun onItemClicked(entry: TaskEntry) {
startActivity(
Intent(requireActivity(), TaskViewerActivity::class.java)
.putExtra(Mavericks.KEY_ARG, entry),
val intent = Intent(
requireActivity(),
Class.forName("com.alfresco.content.app.activity.TaskViewerActivity"),
)
intent.putExtra(Mavericks.KEY_ARG, entry)
startActivity(intent)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.alfresco.content.common

import androidx.appcompat.app.AppCompatActivity

open class BaseActivity : AppCompatActivity()

0 comments on commit c067365

Please sign in to comment.