diff --git a/.mapping.json b/.mapping.json index 40a943ed6..719599a53 100644 --- a/.mapping.json +++ b/.mapping.json @@ -9386,7 +9386,6 @@ "client/ios/DivKit/Patches/DivPatchProvider.swift":"divkit/public/client/ios/DivKit/Patches/DivPatchProvider.swift", "client/ios/DivKit/RawDivData.swift":"divkit/public/client/ios/DivKit/RawDivData.swift", "client/ios/DivKit/RunLoopCardUpdateAggregator.swift":"divkit/public/client/ios/DivKit/RunLoopCardUpdateAggregator.swift", - "client/ios/DivKit/States/DivStateInterceptor.swift":"divkit/public/client/ios/DivKit/States/DivStateInterceptor.swift", "client/ios/DivKit/States/DivStateLifetime.swift":"divkit/public/client/ios/DivKit/States/DivStateLifetime.swift", "client/ios/DivKit/States/DivStateManagement.swift":"divkit/public/client/ios/DivKit/States/DivStateManagement.swift", "client/ios/DivKit/States/DivStateManager.swift":"divkit/public/client/ios/DivKit/States/DivStateManager.swift", diff --git a/client/ios/DivKit/DivBlockModelingContext.swift b/client/ios/DivKit/DivBlockModelingContext.swift index 7a5a96dde..ffa0491bf 100644 --- a/client/ios/DivKit/DivBlockModelingContext.swift +++ b/client/ios/DivKit/DivBlockModelingContext.swift @@ -25,7 +25,6 @@ public struct DivBlockModelingContext { let fontProvider: DivFontProvider let flagsInfo: DivFlagsInfo let extensionHandlers: [String: DivExtensionHandler] - let stateInterceptors: [String: DivStateInterceptor] let layoutDirection: UserInterfaceLayoutDirection let debugParams: DebugParams let scheduler: Scheduling @@ -58,7 +57,6 @@ public struct DivBlockModelingContext { fontProvider: DivFontProvider? = nil, flagsInfo: DivFlagsInfo = .default, extensionHandlers: [DivExtensionHandler] = [], - stateInterceptors: [DivStateInterceptor] = [], variablesStorage: DivVariablesStorage = DivVariablesStorage(), playerFactory: PlayerFactory? = nil, debugParams: DebugParams = DebugParams(), @@ -83,15 +81,6 @@ public struct DivBlockModelingContext { } extensionsHandlersDictionary[id] = extensionHandler } - var stateInterceptorsDictionary = [String: DivStateInterceptor]() - for stateInterceptor in stateInterceptors { - let id = stateInterceptor.id - if stateInterceptorsDictionary[id] != nil { - DivKitLogger.failure("Duplicate DivStateInterceptor for: \(id)") - continue - } - stateInterceptorsDictionary[id] = stateInterceptor - } self.init( viewId: viewId, cardLogId: cardLogId, @@ -107,7 +96,6 @@ public struct DivBlockModelingContext { fontProvider: fontProvider, flagsInfo: flagsInfo, extensionHandlers: extensionsHandlersDictionary, - stateInterceptors: stateInterceptorsDictionary, variablesStorage: variablesStorage, playerFactory: playerFactory, debugParams: debugParams, @@ -136,7 +124,6 @@ public struct DivBlockModelingContext { fontProvider: DivFontProvider?, flagsInfo: DivFlagsInfo, extensionHandlers: [String: DivExtensionHandler], - stateInterceptors: [String: DivStateInterceptor], variablesStorage: DivVariablesStorage, playerFactory: PlayerFactory?, debugParams: DebugParams, @@ -175,7 +162,6 @@ public struct DivBlockModelingContext { self.tooltipViewFactory = tooltipViewFactory self.variablesStorage = variablesStorage self.extensionHandlers = extensionHandlers - self.stateInterceptors = stateInterceptors functionsProvider = FunctionsProvider( cardId: cardId, variablesStorage: variablesStorage, @@ -199,17 +185,13 @@ public struct DivBlockModelingContext { } return extensions.compactMap { let id = $0.id - if !extensionHandlers.keys.contains(id), !stateInterceptors.keys.contains(id) { + if !extensionHandlers.keys.contains(id) { addError(message: "No DivExtensionHandler for: \(id)") } return extensionHandlers[id] } } - public func getStateInterceptor(for divState: DivState) -> DivStateInterceptor? { - divState.extensions?.compactMap { stateInterceptors[$0.id] }.first - } - public func addError(message: String) { errorsStorage.add(DivBlockModelingError(message, path: parentPath)) } diff --git a/client/ios/DivKit/Extensions/DivStateExtensions.swift b/client/ios/DivKit/Extensions/DivStateExtensions.swift index 9a00bef68..ce71bff49 100644 --- a/client/ios/DivKit/Extensions/DivStateExtensions.swift +++ b/client/ios/DivKit/Extensions/DivStateExtensions.swift @@ -23,7 +23,6 @@ extension DivState: DivBlockModeling { context.addWarning(message: "DivState has no id") } - let stateInterceptor = context.getStateInterceptor(for: self) let divStatePath = context.parentDivStatePath + id let defaultStateId = resolveDefaultStateId(context.expressionResolver) let stateManager = context.stateManager @@ -39,8 +38,7 @@ extension DivState: DivBlockModeling { let stateManagerItem = stateManager.get(stateBlockPath: divStatePath) let expressionResolver = context.expressionResolver - let activeState = stateInterceptor?.getAppropriateState(divState: self, context: context) - ?? states.first { $0.stateId == stateManagerItem?.currentStateID.rawValue } + let activeState = states.first { $0.stateId == stateManagerItem?.currentStateID.rawValue } ?? states.first { $0.stateId == defaultStateId } ?? states[0] let activeStateID = DivStateID(rawValue: activeState.stateId) diff --git a/client/ios/DivKit/States/DivStateInterceptor.swift b/client/ios/DivKit/States/DivStateInterceptor.swift deleted file mode 100644 index faa487b6e..000000000 --- a/client/ios/DivKit/States/DivStateInterceptor.swift +++ /dev/null @@ -1,56 +0,0 @@ -import CommonCorePublic - -public protocol DivStateInterceptor { - var id: String { get } - - func getAppropriateState( - divState: DivState, - context: DivBlockModelingContext - ) -> DivState.State? -} - -public final class DivStateInterceptorImpl: DivStateInterceptor { - public let id: String - private let stateId: Variable - - public init( - id: String, - stateId: Variable - ) { - self.id = id - self.stateId = stateId - } - - public func getAppropriateState( - divState: DivState, - context _: DivBlockModelingContext - ) -> DivState.State? { - guard - let extensions = divState.extensions, - let statesExtension = extensions.first(where: { $0.id == id }), - let params = statesExtension.params, - let statePath = statePath( - stateParams: params, - stateId: stateId.value - ) - else { - return nil - } - - let stateId = statePath.split()?.stateId.rawValue - return divState.states.first(where: { $0.stateId == stateId }) - } - - private func statePath( - stateParams: [String: Any], - stateId: DivStateID - ) -> DivStatePath? { - guard - let stateArray = stateParams[stateId.rawValue] as? [String], - let statePath = stateArray.first - else { - return nil - } - return DivStatePath.makeDivStatePath(from: statePath) - } -}