Skip to content

Commit

Permalink
Merge pull request #454 from mindbox-cloud/feature/MBX-3703-SwiftLint
Browse files Browse the repository at this point in the history
MBX-3703: SwiftLint
  • Loading branch information
justSmK authored Oct 17, 2024
2 parents 5a1eff1 + e69b6af commit 8d1fea7
Show file tree
Hide file tree
Showing 272 changed files with 2,354 additions and 2,227 deletions.
145 changes: 145 additions & 0 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# Directory and file filters
included: # paths to include during linting. `--path` is ignored if present.
- Mindbox
- MindboxLogger
- MindboxNotifications
- MindboxTests
- MindboxNotificationsTests
excluded: # paths to ignore during linting. Takes precedence over `included`.

only_rules: # default rules
- closing_brace
- closure_parameter_position
- colon
- comma
- comment_spacing
- compiler_protocol_init
- computed_accessors_order
- control_statement
- cyclomatic_complexity
- deployment_target
- discouraged_direct_init
- duplicate_conditions
- duplicate_enum_cases
- duplicate_imports
- empty_enum_arguments
- empty_parameters
- empty_parentheses_with_trailing_closure
- file_length
- for_where
- force_cast
- force_try
- function_body_length
- function_parameter_count
- generic_type_name
- implicit_getter
- inclusive_language
- invalid_swiftlint_command
- is_disjoint
- large_tuple
- leading_whitespace
- legacy_cggeometry_functions
- legacy_constant
- legacy_constructor
- legacy_hashing
- legacy_nsgeometry_functions
- legacy_random
- line_length
- mark
- multiple_closures_with_trailing_closure
- no_space_in_method_call
- non_optional_string_data_conversion
- notification_center_detachment
- ns_number_init_as_function_reference
- nsobject_prefer_isequal
- opening_brace
- operator_whitespace
- optional_data_string_conversion
- orphaned_doc_comment
- prefer_type_checking
- private_unit_test
- protocol_property_accessors_order
- reduce_boolean
- redundant_discardable_let
- redundant_objc_attribute
- redundant_optional_initialization
- redundant_set_access_control
- redundant_string_enum_value
- redundant_void_return
- return_arrow_whitespace
- self_in_property_initialization
- shorthand_operator
- statement_position
- static_over_final_class
- superfluous_disable_command
- syntactic_sugar
- trailing_comma
- trailing_newline
- trailing_semicolon
- trailing_whitespace
- unavailable_condition
- unneeded_break_in_switch
- unneeded_override
- unneeded_synthesized_initializer
- unused_closure_parameter
- unused_control_flow_label
- unused_enumerated
- unused_optional_binding
- unused_setter_value
- vertical_parameter_alignment
- vertical_whitespace
- void_function_in_ternary
- void_return
- xctfail_message

# opt_in_rules
- attributes
- closure_body_length
- closure_end_indentation
- closure_spacing
- discouraged_object_literal
- empty_count
- empty_string
- fatal_error_message
- first_where
- force_unwrapping
- last_where
- modifier_order
- operator_usage_whitespace
- private_outlet
- redundant_type_annotation
- toggle_bool
- unneeded_parentheses_in_closure_argument
- vertical_whitespace_closing_braces
- weak_delegate
- yoda_condition

# Default Rules Setup

cyclomatic_complexity:
ignores_case_statements: true

file_length:
warning: 400
error: 800
ignore_comment_only_lines: true

function_body_length:
warning: 150
error: 250

large_tuple:
warning: 3
error: 4

line_length:
warning: 220
error: 300
ignores_comments: true
ignores_function_declarations: true

# Opt-in Rules Setup

closure_body_length:
warning: 30
error: 50
23 changes: 23 additions & 0 deletions Mindbox.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3162,6 +3162,7 @@
buildPhases = (
313B232B25ADEA0F00A1CB72 /* Headers */,
313B232C25ADEA0F00A1CB72 /* Sources */,
47DCEB3C2CBD154E0096593C /* Run Script SwiftLint */,
313B232D25ADEA0F00A1CB72 /* Frameworks */,
313B232E25ADEA0F00A1CB72 /* Resources */,
3159FFB425B5AAF300EE80E9 /* Increment Build Number Script */,
Expand Down Expand Up @@ -3499,6 +3500,26 @@
shellPath = /bin/sh;
shellScript = "buildNumber=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\")\nbuildNumber=$(($buildNumber + 1))\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $buildNumber\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\"\n";
};
47DCEB3C2CBD154E0096593C /* Run Script SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Run Script SwiftLint";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/zsh;
shellScript = "export PATH=\"$PATH:/opt/homebrew/bin\"\n\nif which swiftlint >/dev/null; then\n CONFIG_FILE=\"${SRCROOT}/.swiftlint.yml\"\n if [ -f $CONFIG_FILE ]; then\n swiftlint --config $CONFIG_FILE\n else\n echo \"warning: SwiftLint configuration file not found at ${CONFIG_FILE}\"\n swiftlint\n fi\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
Expand Down Expand Up @@ -4146,6 +4167,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_MODULE_VERIFIER = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = Mindbox/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
Expand Down Expand Up @@ -4178,6 +4200,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_MODULE_VERIFIER = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = Mindbox/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ import Foundation
import UserNotifications

final class ClickNotificationManager {

private let databaseRepository: MBDatabaseRepository

init(
databaseRepository: MBDatabaseRepository
) {
self.databaseRepository = databaseRepository
}

func track(uniqueKey: String, buttonUniqueKey: String? = nil) throws {
var trackMobilePushClick: TrackClick?
if let buttonUniqueKey = buttonUniqueKey {
Expand All @@ -36,11 +36,10 @@ final class ClickNotificationManager {
let event = Event(type: .trackClick, body: BodyEncoder(encodable: encodable).body)
try databaseRepository.create(event: event)
}

func track(response: UNNotificationResponse) throws {
let decoder = try NotificationDecoder<NotificationsPayloads.Click>(response: response)
let payload = try decoder.decode()
try track(uniqueKey: payload.uniqueKey, buttonUniqueKey: response.actionIdentifier)
}

}
26 changes: 13 additions & 13 deletions Mindbox/CoreController/CoreController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,27 +25,27 @@ final class CoreController {
var controllerQueue: DispatchQueue

func initialization(configuration: MBConfiguration) {

controllerQueue.async {
SessionTemporaryStorage.shared.isInstalledFromPersistenceStorageBeforeInitSDK = self.persistenceStorage.isInstalled
SessionTemporaryStorage.shared.isInitializationCalled = true

DI.injectOrFail(MigrationManagerProtocol.self).migrate()

self.configValidation.compare(configuration, self.persistenceStorage.configuration)
self.persistenceStorage.configuration = configuration
if !self.persistenceStorage.isInstalled {
self.primaryInitialization(with: configuration)
} else {
self.repeatInitialization(with: configuration)
}

self.guaranteedDeliveryManager.canScheduleOperations = true

let appStateMessage = "[App State]: \(UIApplication.shared.appStateDescription)"
Logger.common(message: appStateMessage, level: .info, category: .general)
}

Logger.common(message: "[Configuration]: \(configuration)", level: .info, category: .general)
Logger.common(message: "[SDK Version]: \(self.utilitiesFetcher.sdkVersion ?? "null")", level: .info, category: .general)
Logger.common(message: "[APNS Token]: \(self.persistenceStorage.apnsToken ?? "null")", level: .info, category: .general)
Expand All @@ -55,15 +55,15 @@ final class CoreController {
func apnsTokenDidUpdate(token: String) {
controllerQueue.async {
let isNotificationsEnabled = self.notificationStatus()

if self.persistenceStorage.needUpdateInfoOnce ?? true {
self.updateInfo(apnsToken: token, isNotificationsEnabled: isNotificationsEnabled)
self.persistenceStorage.isNotificationsEnabled = isNotificationsEnabled
self.persistenceStorage.apnsToken = token
self.persistenceStorage.needUpdateInfoOnce = false
return
}

if self.persistenceStorage.isInstalled {
self.updateInfo(
apnsToken: token,
Expand Down Expand Up @@ -107,15 +107,15 @@ final class CoreController {

private func generateDeviceUUID() -> String {
let lock = DispatchSemaphore(value: 0)
var deviceUUID: String?
var deviceUUID = String()
let start = CFAbsoluteTimeGetCurrent()
utilitiesFetcher.getDeviceUUID {
deviceUUID = $0
lock.signal()
}
lock.wait()
Logger.common(message: "It took \(CFAbsoluteTimeGetCurrent() - start) seconds to generate deviceUUID", level: .debug, category: .general)
return deviceUUID!
return deviceUUID
}

private func primaryInitialization(with configutaion: MBConfiguration) {
Expand All @@ -133,7 +133,7 @@ final class CoreController {
Logger.common(message: "Unable to find deviceUUID in persistenceStorage", level: .error, category: .general)
return
}

if configValidation.changedState != .none {
Logger.common(message: "Mindbox Configuration changed", level: .info, category: .general)
install(
Expand Down Expand Up @@ -272,13 +272,13 @@ final class CoreController {
}
}
}

let timer = DI.injectOrFail(TimerManager.self)
timer.configurate(trackEvery: 20 * 60) {
Logger.common(message: "Scheduled Time tracker started")
sessionManager.trackForeground()
}

timer.setupTimer()
}
}
Loading

0 comments on commit 8d1fea7

Please sign in to comment.