Merge branch 'bugfix/CXTDT-569436' into 'develop'
Digital PCT265 defect CXTDT-569436: Restore render dispatch in handleNewData.... ### Summary Fix first time rendering. ### JIRA Ticket https://onejira.verizon.com/browse/CXTDT-569436 Co-authored-by: Hedden, Kyle Matthew <kyle.hedden@verizonwireless.com> See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1125
This commit is contained in:
commit
d0bf8a1573
@ -79,10 +79,10 @@
|
||||
}
|
||||
|
||||
|
||||
open override func handleNewData(_ pageModel: PageModelProtocol? = nil) {
|
||||
open override func handleNewData(_ pageModel: PageModelProtocol? = nil, shouldTriggerRender: Bool = true) {
|
||||
setup()
|
||||
registerCells()
|
||||
super.handleNewData(pageModel)
|
||||
super.handleNewData(pageModel, shouldTriggerRender: shouldTriggerRender)
|
||||
}
|
||||
|
||||
open override func updateUI(for molecules: [MoleculeModelProtocol]? = nil) {
|
||||
|
||||
@ -25,8 +25,8 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate {
|
||||
try decoder.decode(ModalListPageTemplateModel.self, from: data)
|
||||
}
|
||||
|
||||
override open func handleNewData(_ pageModel: PageModelProtocol? = nil) {
|
||||
super.handleNewData(pageModel)
|
||||
override open func handleNewData(_ pageModel: PageModelProtocol? = nil, shouldTriggerRender: Bool = true) {
|
||||
super.handleNewData(pageModel, shouldTriggerRender: shouldTriggerRender)
|
||||
|
||||
closeButton = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
|
||||
@ -23,8 +23,8 @@ open class ModalMoleculeStackTemplate: MoleculeStackTemplate {
|
||||
// MARK: - Lifecycle
|
||||
//--------------------------------------------------
|
||||
|
||||
override open func handleNewData(_ pageModel: PageModelProtocol? = nil) {
|
||||
super.handleNewData(pageModel)
|
||||
override open func handleNewData(_ pageModel: PageModelProtocol? = nil, shouldTriggerRender: Bool = true) {
|
||||
super.handleNewData(pageModel, shouldTriggerRender: shouldTriggerRender)
|
||||
_ = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
let closeAction = (self.templateModel as? ModalStackPageTemplateModel)?.closeAction ??
|
||||
|
||||
@ -85,8 +85,8 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol
|
||||
return view
|
||||
}
|
||||
|
||||
open override func handleNewData(_ pageModel: PageModelProtocol? = nil) {
|
||||
super.handleNewData(pageModel)
|
||||
open override func handleNewData(_ pageModel: PageModelProtocol? = nil, shouldTriggerRender: Bool = true) {
|
||||
super.handleNewData(pageModel, shouldTriggerRender: shouldTriggerRender)
|
||||
|
||||
if pageModel != nil {
|
||||
setup()
|
||||
|
||||
@ -20,10 +20,10 @@ open class MoleculeStackTemplate: ThreeLayerViewController, TemplateProtocol {
|
||||
// MARK: - Lifecycle
|
||||
//--------------------------------------------------
|
||||
|
||||
open override func handleNewData(_ pageModel: PageModelProtocol? = nil) {
|
||||
open override func handleNewData(_ pageModel: PageModelProtocol? = nil, shouldTriggerRender: Bool = true) {
|
||||
topViewOutsideOfScroll = templateModel?.anchorHeader ?? false
|
||||
bottomViewOutsideOfScroll = templateModel?.anchorFooter ?? false
|
||||
super.handleNewData(pageModel)
|
||||
super.handleNewData(pageModel, shouldTriggerRender: shouldTriggerRender)
|
||||
}
|
||||
|
||||
// For subclassing the model.
|
||||
|
||||
@ -225,9 +225,9 @@ import MVMCore
|
||||
return navigationModel
|
||||
}
|
||||
|
||||
/// Processes any new data. Called after the page is loaded the first time and on response updates for this page. Triggers a render refresh.
|
||||
/// Processes any new data. Called after the page is loaded the first time and on response updates for this page. Triggers a render refresh unless specified otherwise.
|
||||
@MainActor
|
||||
open func handleNewData(_ pageModel: PageModelProtocol? = nil) {
|
||||
open func handleNewData(_ pageModel: PageModelProtocol? = nil, shouldTriggerRender: Bool = true) {
|
||||
|
||||
guard var newPageModel = pageModel ?? self.pageModel else { return }
|
||||
let originalModel = isFirstRender ? nil : self.pageModel as? MVMControllerModelProtocol
|
||||
@ -279,13 +279,19 @@ import MVMCore
|
||||
// Notify the manager of new data.
|
||||
// Warning: Some flows cause table reloads. Until the UI update is decoupled, should be after the updateUI.
|
||||
manager?.newDataReceived?(in: self)
|
||||
|
||||
if allUpdatedMolecules.isEmpty || isFirstRender {
|
||||
debugLog("Performing full page render...")
|
||||
updateUI()
|
||||
} else {
|
||||
debugLog("Performing partial render of \(allUpdatedMolecules) molecules...")
|
||||
updateUI(for: allUpdatedMolecules)
|
||||
|
||||
guard shouldTriggerRender else { return }
|
||||
|
||||
// Dispatch to decouple execution. First massage data through template classes, then render.
|
||||
Task { @MainActor in
|
||||
|
||||
if allUpdatedMolecules.isEmpty || isFirstRender {
|
||||
debugLog("Performing full page render...")
|
||||
updateUI()
|
||||
} else {
|
||||
debugLog("Performing partial render of \(allUpdatedMolecules) molecules...")
|
||||
updateUI(for: allUpdatedMolecules)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -399,7 +405,8 @@ import MVMCore
|
||||
initialLoad()
|
||||
}
|
||||
|
||||
handleNewData(pageModel) // Set outside shouldFinishProcessingLoad.
|
||||
handleNewData(pageModel, shouldTriggerRender: false) // Set outside shouldFinishProcessingLoad.
|
||||
updateUI() // Force the rendering on the same main UI thread.
|
||||
}
|
||||
|
||||
open override func viewDidLayoutSubviews() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user