@@ -235,12 +235,18 @@ class FileDisplayActivity :
235235 this .fileIDForImmediatePreview = fileIDForImmediatePreview
236236 }
237237
238+ @SuppressLint(" UnsafeIntentLaunch" )
238239 override fun onCreate (savedInstanceState : Bundle ? ) {
239240 Log_OC .v(TAG , " onCreate() start" )
240241 // Set the default theme to replace the launch screen theme.
241242 setTheme(R .style.Theme_ownCloud_Toolbar_Drawer )
242243
243244 super .onCreate(savedInstanceState)
245+
246+ intent?.let {
247+ handleCommonIntents(it)
248+ }
249+
244250 loadSavedInstanceState(savedInstanceState)
245251
246252 /* * USER INTERFACE */
@@ -253,10 +259,6 @@ class FileDisplayActivity :
253259 showSortListGroup(savedInstanceState.getBoolean(KEY_IS_SORT_GROUP_VISIBLE ))
254260 }
255261
256- if (Intent .ACTION_VIEW == intent.action) {
257- handleOpenFileViaIntent(intent)
258- }
259-
260262 mPlayerConnection = PlayerServiceConnection (this )
261263
262264 checkStoragePath()
@@ -377,17 +379,6 @@ class FileDisplayActivity :
377379 syncAndUpdateFolder(true )
378380 }
379381
380- if (OPEN_FILE == intent.action) {
381- supportFragmentManager.executePendingTransactions()
382- onOpenFileIntent(intent)
383- } else if (RESTART == intent.action) {
384- // most likely switched to different account
385- DisplayUtils .showSnackMessage(
386- this ,
387- String .format(getString(R .string.logged_in_as), accountManager.user.accountName)
388- )
389- }
390-
391382 upgradeNotificationForInstantUpload()
392383 checkOutdatedServer()
393384 checkNotifications()
@@ -533,71 +524,104 @@ class FileDisplayActivity :
533524 resetTitleBarAndScrolling()
534525 }
535526
536- // Is called with the flag FLAG_ACTIVITY_SINGLE_TOP and set the new file and intent
527+ // region Handle Intents
528+ @SuppressLint(" UnsafeIntentLaunch" )
537529 override fun onNewIntent (intent : Intent ) {
538530 super .onNewIntent(intent)
539531 setIntent(intent)
532+ handleCommonIntents(intent)
533+ handleSpecialIntents(intent)
534+ }
540535
541- if (ACTION_DETAILS .equals(intent.action, ignoreCase = true )) {
542- val file = intent.getParcelableArgument(EXTRA_FILE , OCFile ::class .java)
543- setFile(file)
544- setIntent(intent)
545- showDetails(file)
546- } else if (Intent .ACTION_VIEW == intent.action) {
547- handleOpenFileViaIntent(intent)
548- } else if (OPEN_FILE == intent.action) {
549- onOpenFileIntent(intent)
550- } else if (RESTART == intent.action) {
551- finish()
552- startActivity(intent)
553- } else {
554- // Verify the action and get the query
555- if (Intent .ACTION_SEARCH == intent.action) {
556- setIntent(intent)
557-
558- val searchEvent =
559- intent.getParcelableArgument(OCFileListFragment .SEARCH_EVENT , SearchEvent ::class .java)
560- if (searchEvent != null ) {
561- if (SearchRemoteOperation .SearchType .PHOTO_SEARCH == searchEvent.searchType) {
562- Log_OC .d(this , " Switch to photo search fragment" )
563-
564- val photoFragment = GalleryFragment ()
565- val bundle = Bundle ()
566- bundle.putParcelable(OCFileListFragment .SEARCH_EVENT , searchEvent)
567- photoFragment.setArguments(bundle)
568- this .leftFragment = photoFragment
569- } else if (searchEvent.searchType == SearchRemoteOperation .SearchType .SHARED_FILTER ) {
570- Log_OC .d(this , " Switch to shared fragment" )
571- val sharedListFragment = SharedListFragment ()
572- val bundle = Bundle ()
573- bundle.putParcelable(OCFileListFragment .SEARCH_EVENT , searchEvent)
574- sharedListFragment.setArguments(bundle)
575- this .leftFragment = sharedListFragment
576- } else {
577- Log_OC .d(this , " Switch to oc file search fragment" )
536+ private fun handleSpecialIntents (intent : Intent ) {
537+ val action = intent.action
578538
579- val photoFragment = OCFileListFragment ()
580- val bundle = Bundle ()
581- bundle.putParcelable(OCFileListFragment .SEARCH_EVENT , searchEvent)
582- photoFragment.setArguments(bundle)
583- this .leftFragment = photoFragment
584- }
585- }
586- } else if (ALL_FILES == intent.action) {
539+ when {
540+ ACTION_DETAILS .equals(action, ignoreCase = true ) -> {
541+ val file = intent.getParcelableArgument(EXTRA_FILE , OCFile ::class .java)
542+ setFile(file)
543+ showDetails(file)
544+ }
545+
546+ Intent .ACTION_SEARCH == action -> handleSearchIntent(intent)
547+
548+ ALL_FILES == action -> {
587549 Log_OC .d(this , " Switch to oc file fragment" )
588550 menuItemId = R .id.nav_all_files
589- this . leftFragment = OCFileListFragment ()
551+ leftFragment = OCFileListFragment ()
590552 supportFragmentManager.executePendingTransactions()
591553 browseToRoot()
592- } else if (LIST_GROUPFOLDERS == intent.action) {
554+ }
555+
556+ LIST_GROUPFOLDERS == action -> {
593557 Log_OC .d(this , " Switch to list groupfolders fragment" )
594558 menuItemId = R .id.nav_groupfolders
595- this . leftFragment = GroupfolderListFragment ()
559+ leftFragment = GroupfolderListFragment ()
596560 supportFragmentManager.executePendingTransactions()
597561 }
598562 }
599563 }
600564
565+ @SuppressLint(" UnsafeIntentLaunch" )
566+ private fun handleCommonIntents (intent : Intent ) {
567+ when (intent.action) {
568+ Intent .ACTION_VIEW -> handleOpenFileViaIntent(intent)
569+ OPEN_FILE -> {
570+ supportFragmentManager.executePendingTransactions()
571+ onOpenFileIntent(intent)
572+ }
573+ RESTART -> {
574+ val accountName = accountManager.user.accountName
575+ val message = getString(R .string.logged_in_as)
576+ val snackBarMessage = String .format(message, accountName)
577+ DisplayUtils .showSnackMessage(this , snackBarMessage)
578+
579+ finish()
580+ startActivity(intent)
581+ }
582+ }
583+ }
584+
585+ private fun handleSearchIntent (intent : Intent ) {
586+ val searchEvent = intent.getParcelableArgument(
587+ OCFileListFragment .SEARCH_EVENT ,
588+ SearchEvent ::class .java
589+ ) ? : return
590+
591+ when (searchEvent.searchType) {
592+ SearchRemoteOperation .SearchType .PHOTO_SEARCH -> {
593+ Log_OC .d(this , " Switch to photo search fragment" )
594+ val bundle = Bundle ().apply {
595+ putParcelable(OCFileListFragment .SEARCH_EVENT , searchEvent)
596+ }
597+ leftFragment = GalleryFragment ().apply {
598+ arguments = bundle
599+ }
600+ }
601+
602+ SearchRemoteOperation .SearchType .SHARED_FILTER -> {
603+ Log_OC .d(this , " Switch to shared fragment" )
604+ val bundle = Bundle ().apply {
605+ putParcelable(OCFileListFragment .SEARCH_EVENT , searchEvent)
606+ }
607+ leftFragment = SharedListFragment ().apply {
608+ arguments = bundle
609+ }
610+ }
611+
612+ else -> {
613+ Log_OC .d(this , " Switch to oc file search fragment" )
614+ val bundle = Bundle ().apply {
615+ putParcelable(OCFileListFragment .SEARCH_EVENT , searchEvent)
616+ }
617+ leftFragment = OCFileListFragment ().apply {
618+ arguments = bundle
619+ }
620+ }
621+ }
622+ }
623+ // endregion
624+
601625 private fun onOpenFileIntent (intent : Intent ) {
602626 val extra = intent.getStringExtra(EXTRA_FILE )
603627 val file = storageManager.getFileByDecryptedRemotePath(extra)
0 commit comments