Skip to content

Commit d431d54

Browse files
Merge pull request #362 from PermanentOrg/bug/VSP-1616
Fix crash when opening photos from large archives
2 parents 805f7dc + 69b8acb commit d431d54

File tree

11 files changed

+43
-25
lines changed

11 files changed

+43
-25
lines changed

.idea/deploymentTargetSelector.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.permanent.permanent.models
2+
3+
object FileSessionData {
4+
var records: List<Record>? = null
5+
}

app/src/main/java/org/permanent/permanent/ui/RecordSearchFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ import com.google.android.material.chip.Chip
1616
import com.google.android.material.chip.ChipGroup
1717
import org.permanent.permanent.R
1818
import org.permanent.permanent.databinding.FragmentRecordSearchBinding
19+
import org.permanent.permanent.models.FileSessionData
1920
import org.permanent.permanent.models.Record
2021
import org.permanent.permanent.models.Tag
2122
import org.permanent.permanent.ui.fileView.FileActivity
2223
import org.permanent.permanent.ui.fileView.FileInfoFragment
23-
import org.permanent.permanent.ui.myFiles.PARCELABLE_FILES_KEY
2424
import org.permanent.permanent.ui.myFiles.RecordsListAdapter
2525
import org.permanent.permanent.viewmodels.RecordSearchViewModel
2626

@@ -89,7 +89,7 @@ class RecordSearchFragment : PermanentBaseFragment() {
8989
if (record.displayFirstInCarousel) recordToView = record
9090
}
9191
val intent = Intent(context, FileActivity::class.java)
92-
intent.putExtra(PARCELABLE_FILES_KEY, it)
92+
FileSessionData.records = it
9393
startActivityForResult(intent, FileInfoFragment.ACTIVITY_RESULT_REQUEST_CODE)
9494

9595
}

app/src/main/java/org/permanent/permanent/ui/fileView/FileActivity.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.navigation.ui.NavigationUI
1010
import androidx.navigation.ui.navigateUp
1111
import org.permanent.permanent.R
1212
import org.permanent.permanent.databinding.ActivityFileBinding
13+
import org.permanent.permanent.models.FileSessionData
1314
import org.permanent.permanent.ui.PREFS_NAME
1415
import org.permanent.permanent.ui.PreferencesHelper
1516
import org.permanent.permanent.ui.activities.PermanentBaseActivity
@@ -63,6 +64,11 @@ class FileActivity : PermanentBaseActivity() {
6364
}
6465
}
6566

67+
fun setToolbarAndStatusBarColor(colorId: Int) {
68+
binding.fileToolbar.setBackgroundColor(ContextCompat.getColor(this, colorId))
69+
window.statusBarColor = ContextCompat.getColor(this, colorId)
70+
}
71+
6672
override fun connectViewModelEvents() {
6773
}
6874

@@ -78,9 +84,9 @@ class FileActivity : PermanentBaseActivity() {
7884
super.onPause()
7985
disconnectViewModelEvents()
8086
}
81-
82-
fun setToolbarAndStatusBarColor(colorId: Int) {
83-
binding.fileToolbar.setBackgroundColor(ContextCompat.getColor(this, colorId))
84-
window.statusBarColor = ContextCompat.getColor(this, colorId)
87+
88+
override fun onDestroy() {
89+
super.onDestroy()
90+
FileSessionData.records = null
8591
}
8692
}

app/src/main/java/org/permanent/permanent/ui/fileView/FilesContainerFragment.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package org.permanent.permanent.ui.fileView
22

33
import android.os.Bundle
4-
import android.view.*
4+
import android.view.LayoutInflater
5+
import android.view.Menu
6+
import android.view.MenuInflater
7+
import android.view.View
8+
import android.view.ViewGroup
59
import androidx.lifecycle.ViewModelProvider
610
import org.permanent.permanent.DevicePermissionsHelper
711
import org.permanent.permanent.R
812
import org.permanent.permanent.databinding.FragmentFilesContainerBinding
13+
import org.permanent.permanent.models.FileSessionData
914
import org.permanent.permanent.models.Record
1015
import org.permanent.permanent.ui.PermanentBaseFragment
11-
import org.permanent.permanent.ui.myFiles.PARCELABLE_FILES_KEY
1216
import org.permanent.permanent.viewmodels.FilesContainerViewModel
1317

1418
class FilesContainerFragment : PermanentBaseFragment() {
@@ -42,7 +46,8 @@ class FilesContainerFragment : PermanentBaseFragment() {
4246
}
4347

4448
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
45-
arguments?.getParcelableArrayList<Record>(PARCELABLE_FILES_KEY)?.let {
49+
val records = FileSessionData.records
50+
records?.let {
4651
viewAdapter = FilesContainerPagerAdapter(this, it)
4752
val viewPager = binding.vpFileView
4853
viewPager.adapter = viewAdapter
@@ -51,7 +56,7 @@ class FilesContainerFragment : PermanentBaseFragment() {
5156
}
5257
}
5358

54-
private fun getFileIndexToStartWith(files: ArrayList<Record>): Int {
59+
private fun getFileIndexToStartWith(files: List<Record>): Int {
5560
for ((index, file) in files.withIndex())
5661
if (file.displayFirstInCarousel) return index
5762
return 0

app/src/main/java/org/permanent/permanent/ui/fileView/FilesContainerPagerAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import androidx.fragment.app.FragmentStatePagerAdapter
66
import org.permanent.permanent.models.Record
77
import org.permanent.permanent.ui.myFiles.PARCELABLE_RECORD_KEY
88

9-
class FilesContainerPagerAdapter(val fragment: Fragment, private val files: MutableList<Record>
9+
class FilesContainerPagerAdapter(val fragment: Fragment, private val files: List<Record>
1010
) : FragmentStatePagerAdapter(fragment.childFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
1111

1212
override fun getCount(): Int = files.size

app/src/main/java/org/permanent/permanent/ui/myFiles/MyFilesFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import org.permanent.permanent.databinding.DialogRenameRecordBinding
3232
import org.permanent.permanent.databinding.FragmentMyFilesBinding
3333
import org.permanent.permanent.models.AccountEventAction
3434
import org.permanent.permanent.models.Download
35+
import org.permanent.permanent.models.FileSessionData
3536
import org.permanent.permanent.models.NavigationFolderIdentifier
3637
import org.permanent.permanent.models.Record
3738
import org.permanent.permanent.network.models.ChecklistItem
@@ -324,8 +325,8 @@ class MyFilesFragment : PermanentBaseFragment() {
324325
}
325326

326327
private val onFileViewRequest = Observer<ArrayList<Record>> {
327-
val bundle = bundleOf(PARCELABLE_FILES_KEY to it)
328-
findNavController().navigate(R.id.action_myFilesFragment_to_fileActivity, bundle)
328+
FileSessionData.records = it
329+
findNavController().navigate(R.id.action_myFilesFragment_to_fileActivity)
329330
}
330331

331332
private val onRecordSelectedObserver = Observer<Record> {

app/src/main/java/org/permanent/permanent/ui/public/PublicArchiveFragment.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ import androidx.recyclerview.widget.GridLayoutManager
1515
import androidx.recyclerview.widget.RecyclerView
1616
import org.permanent.permanent.R
1717
import org.permanent.permanent.databinding.FragmentPublicArchiveBinding
18+
import org.permanent.permanent.models.FileSessionData
1819
import org.permanent.permanent.models.Record
1920
import org.permanent.permanent.ui.PREFS_NAME
2021
import org.permanent.permanent.ui.PermanentBaseFragment
2122
import org.permanent.permanent.ui.PreferencesHelper
2223
import org.permanent.permanent.ui.Workspace
23-
import org.permanent.permanent.ui.myFiles.PARCELABLE_FILES_KEY
2424
import org.permanent.permanent.ui.myFiles.PARCELABLE_RECORD_KEY
2525
import org.permanent.permanent.ui.myFiles.RecordListener
2626
import org.permanent.permanent.ui.myFiles.RecordOptionsFragment
@@ -86,9 +86,9 @@ class PublicArchiveFragment : PermanentBaseFragment(), RecordListener {
8686
}
8787

8888
private val onFileViewRequest = Observer<ArrayList<Record>> {
89-
val bundle = bundleOf(PARCELABLE_FILES_KEY to it)
89+
FileSessionData.records = it
9090
requireParentFragment().findNavController()
91-
.navigate(R.id.action_publicFragment_to_fileActivity, bundle)
91+
.navigate(R.id.action_publicFragment_to_fileActivity)
9292
}
9393

9494
private val onFolderViewRequest = Observer<Record> {

app/src/main/java/org/permanent/permanent/ui/public/PublicFilesFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import org.permanent.permanent.databinding.DialogRenameRecordBinding
3232
import org.permanent.permanent.databinding.FragmentPublicFilesBinding
3333
import org.permanent.permanent.models.AccountEventAction
3434
import org.permanent.permanent.models.Download
35+
import org.permanent.permanent.models.FileSessionData
3536
import org.permanent.permanent.models.NavigationFolderIdentifier
3637
import org.permanent.permanent.models.Record
3738
import org.permanent.permanent.network.models.ChecklistItem
@@ -259,8 +260,8 @@ class PublicFilesFragment : PermanentBaseFragment() {
259260
}
260261

261262
private val onFileViewRequest = Observer<ArrayList<Record>> {
262-
val bundle = bundleOf(PARCELABLE_FILES_KEY to it)
263-
findNavController().navigate(R.id.action_publicFilesFragment_to_fileActivity, bundle)
263+
FileSessionData.records = it
264+
findNavController().navigate(R.id.action_publicFilesFragment_to_fileActivity)
264265
}
265266

266267
private val shrinkIslandRequestObserver = Observer<Void?> {

app/src/main/java/org/permanent/permanent/ui/public/PublicFolderFragment.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup
88
import androidx.appcompat.app.AppCompatActivity
9-
import androidx.core.os.bundleOf
109
import androidx.lifecycle.MutableLiveData
1110
import androidx.lifecycle.Observer
1211
import androidx.lifecycle.ViewModelProvider
@@ -16,13 +15,13 @@ import androidx.recyclerview.widget.RecyclerView
1615
import com.google.android.material.snackbar.Snackbar
1716
import org.permanent.permanent.R
1817
import org.permanent.permanent.databinding.FragmentPublicFolderBinding
18+
import org.permanent.permanent.models.FileSessionData
1919
import org.permanent.permanent.models.Record
2020
import org.permanent.permanent.ui.PREFS_NAME
2121
import org.permanent.permanent.ui.PermanentBaseFragment
2222
import org.permanent.permanent.ui.PreferencesHelper
2323
import org.permanent.permanent.ui.Workspace
2424
import org.permanent.permanent.ui.fileView.FileViewOptionsFragment
25-
import org.permanent.permanent.ui.myFiles.PARCELABLE_FILES_KEY
2625
import org.permanent.permanent.ui.myFiles.PARCELABLE_RECORD_KEY
2726
import org.permanent.permanent.ui.myFiles.RecordListener
2827
import org.permanent.permanent.ui.myFiles.RecordOptionsFragment
@@ -66,9 +65,9 @@ class PublicFolderFragment : PermanentBaseFragment(), RecordListener {
6665
}
6766

6867
private val onFileViewRequest = Observer<ArrayList<Record>> {
69-
val bundle = bundleOf(PARCELABLE_FILES_KEY to it)
68+
FileSessionData.records = it
7069
requireParentFragment().findNavController()
71-
.navigate(R.id.action_publicFolderFragment_to_fileActivity, bundle)
70+
.navigate(R.id.action_publicFolderFragment_to_fileActivity)
7271
}
7372

7473
private val onFolderNameChanged = Observer<String> {

0 commit comments

Comments
 (0)