Skip to content

Commit

Permalink
Bugfix FXIOS-5123 [v107.1] Fix jump back in crash (#12369)
Browse files Browse the repository at this point in the history
* Fix jump back in crash

* Fix tests
# Conflicts:
#	Tests/ClientTests/Frontend/Home/JumpBackIn/JumpBackInViewModelTests.swift

# Conflicts:
#	Tests/ClientTests/Frontend/Home/JumpBackIn/JumpBackInViewModelTests.swift
  • Loading branch information
OrlaM committed Nov 25, 2022
1 parent ab0d225 commit ead4eb7
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
14 changes: 4 additions & 10 deletions Client/Frontend/Home/JumpBackIn/JumpBackInViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ class JumpBackInViewModel: FeatureFlaggable {
// MARK: - Private: Prepare UI data
private extension JumpBackInViewModel {

func refreshData(maxItemsToDisplay: JumpBackInDisplayGroupCount) {
private func refreshData(maxItemsToDisplay: JumpBackInDisplayGroupCount) {
jumpBackInList = createJumpBackInList(
from: recentTabs,
withMaxTabsCount: maxItemsToDisplay.tabsCount,
Expand Down Expand Up @@ -465,24 +465,16 @@ extension JumpBackInViewModel: HomepageViewModelProtocol {
func refreshData(for traitCollection: UITraitCollection,
isPortrait: Bool = UIWindow.isPortrait,
device: UIUserInterfaceIdiom = UIDevice.current.userInterfaceIdiom) {
getLatestData()
updateSectionLayout(for: traitCollection,
isPortrait: isPortrait,
device: device)

let maxItemsToDisplay = sectionLayout.maxItemsToDisplay(
hasAccount: jumpBackInDataAdaptor.hasSyncedTabFeatureEnabled,
device: device
)
refreshData(maxItemsToDisplay: maxItemsToDisplay)
}

private func getLatestData() {
recentTabs = jumpBackInDataAdaptor.getRecentTabData()
recentGroups = jumpBackInDataAdaptor.getGroupsData()
recentSyncedTab = jumpBackInDataAdaptor.getSyncedTabData()
}

func updatePrivacyConcernedSection(isPrivate: Bool) {
self.isPrivate = isPrivate
}
Expand Down Expand Up @@ -559,7 +551,9 @@ extension JumpBackInViewModel: HomepageSectionHandler {
extension JumpBackInViewModel: JumpBackInDelegate {
func didLoadNewData() {
ensureMainThread {
self.getLatestData()
self.recentTabs = self.jumpBackInDataAdaptor.getRecentTabData()
self.recentGroups = self.jumpBackInDataAdaptor.getGroupsData()
self.recentSyncedTab = self.jumpBackInDataAdaptor.getSyncedTabData()
guard self.isEnabled else { return }
self.delegate?.reloadView()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ class JumpBackInViewModelTests: XCTestCase {
trait.overridenHorizontalSizeClass = .compact
trait.overridenVerticalSizeClass = .regular

subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: false,
device: .phone)
Expand All @@ -186,6 +187,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .compact
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .phone)
Expand All @@ -206,6 +208,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .compact
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .phone)
Expand Down Expand Up @@ -244,6 +247,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .compact
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: false, device: .phone)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .phone)
Expand Down Expand Up @@ -282,6 +286,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .pad)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .pad)
Expand Down Expand Up @@ -321,6 +326,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .compact
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .phone)
Expand All @@ -340,6 +346,8 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .regular

subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: false, device: .pad)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .pad)
Expand All @@ -360,6 +368,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .compact
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .phone)
Expand Down Expand Up @@ -396,6 +405,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: false, device: .pad)
let maxItems = subject.sectionLayout.maxItemsToDisplay(hasAccount: true,
device: .pad)
Expand All @@ -411,6 +421,7 @@ class JumpBackInViewModelTests: XCTestCase {
let tab2 = createTab(profile: mockProfile, urlString: "www.firefox1.com")
let tab3 = createTab(profile: mockProfile, urlString: "www.firefox1.com")
adaptor.recentTabs = [tab1, tab2, tab3]
subject.didLoadNewData()

// Start in portrait
let portraitTrait = MockTraitCollection()
Expand Down Expand Up @@ -455,6 +466,7 @@ class JumpBackInViewModelTests: XCTestCase {

func testRefreshData_noData() {
let subject = createSubject()
subject.didLoadNewData()
subject.refreshData(for: MockTraitCollection())

XCTAssertEqual(subject.jumpBackInList.tabs.count, 0)
Expand All @@ -465,6 +477,7 @@ class JumpBackInViewModelTests: XCTestCase {
let subject = createSubject()
let tab1 = createTab(profile: mockProfile, urlString: "www.firefox1.com")
adaptor.recentTabs = [tab1]
subject.didLoadNewData()
subject.refreshData(for: MockTraitCollection())

XCTAssertEqual(subject.jumpBackInList.tabs.count, 1)
Expand All @@ -474,6 +487,7 @@ class JumpBackInViewModelTests: XCTestCase {
func testRefreshData_syncedTab() {
let subject = createSubject()
adaptor.syncedTab = JumpBackInSyncedTab(client: remoteClient, tab: remoteTab)
subject.didLoadNewData()
subject.refreshData(for: MockTraitCollection())

XCTAssertEqual(subject.jumpBackInList.tabs.count, 0)
Expand All @@ -493,6 +507,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .compact
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)

XCTAssertEqual(subject.sectionLayout, .compactJumpBackIn)
Expand All @@ -512,6 +527,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .compact
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)

XCTAssertEqual(subject.sectionLayout, .compactJumpBackIn)
Expand All @@ -532,6 +548,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .compact
trait.overridenVerticalSizeClass = .regular
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: true, device: .phone)

let jumpBackIn = subject.jumpBackInList
Expand All @@ -556,6 +573,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .compact
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: false, device: .phone)

let jumpBackIn = subject.jumpBackInList
Expand All @@ -581,6 +599,7 @@ class JumpBackInViewModelTests: XCTestCase {
let trait = MockTraitCollection()
trait.overridenHorizontalSizeClass = .regular
trait.overridenVerticalSizeClass = .compact
subject.didLoadNewData()
subject.refreshData(for: trait, isPortrait: false, device: .phone)

let jumpBackIn = subject.jumpBackInList
Expand Down

0 comments on commit ead4eb7

Please # to comment.