Skip to content

Instantly share code, notes, and snippets.

View agiguere's full-sized avatar

Alexandre Giguere agiguere

  • Beyond Technologies
  • Montreal, Canada
View GitHub Profile
@agiguere
agiguere / HUDLoadingIndicator.swift
Last active January 5, 2021 15:59
MBProgressHUD Swift extension with dimmed background
import UIKit
public extension MBProgressHUD {
@objc func dimBackgroundView() {
backgroundView.style = .solidColor
backgroundView.color = UIColor(white: 0.0, alpha: 0.4)
bezelView.style = .solidColor
bezelView.backgroundColor = UIColor(white: 0.0, alpha: 0.9)
contentColor = .white
}
@agiguere
agiguere / SAPODataError.swift
Last active August 24, 2020 23:58
SAP OData Error Payload
import Foundation
// MARK: - ODataErrorPayload
public struct ODataErrorPayload: Decodable {
private enum CodingKeys: String, CodingKey {
case error
}
public let error: ODataError
}
@agiguere
agiguere / SAPURLSession+Extension.swift
Last active August 24, 2020 23:58
SAPURLSession+Extension for SAP Blog
import Foundation
import SAPFoundation
import Combine
public extension SAPURLSession {
enum SAPURLError: Error {
case requestFailed(URLError)
case redirection(HTTPURLResponse)
case client(response: HTTPURLResponse, payload: ODataErrorPayload?)
@agiguere
agiguere / FUILoadingIndicatorProviding.swift
Created August 29, 2019 12:57
SAP Fiori for iOS SDK Code Snippet: FUI Loading Indicator Providing Protocol
import Foundation
import SAPFiori
/// SAP Fiori loading indicator helper / utility methods
public protocol FUILoadingIndicatorProviding: class {
var loadingIndicator: FUILoadingIndicatorView? { get set }
}
public extension FUILoadingIndicatorProviding where Self: UIViewController {
@agiguere
agiguere / FUIAlertControllerProviding.swift
Created August 29, 2019 12:55
SAP Fiori for iOS SDK Code Snippet: Alert Controller Providing Protocol
import UIKit
/// Alert controller helper / utility methods
public protocol FUIAlertControllerProviding: class { }
public extension FUIAlertControllerProviding where Self: UIViewController {
/// Show an alert controller with 1 button
///
/// - Parameters:
@agiguere
agiguere / OnboardingErrorHandler.swift
Created August 29, 2019 12:38
SAP Fiori for iOS SDK Code Snippet: OnboardingErrorHandler
import SAPCommon
import SAPFiori
import SAPFioriFlows
import SAPFoundation
class OnboardingErrorHandler {
/// Onboarding error handling can be customized here
func handleOnboardingError(_ error: Error) {
switch error {
@agiguere
agiguere / ApplicationUIManager.swift
Created August 29, 2019 12:31
SAP Fiori for iOS SDK Code Snippet: ApplicationUIManager
import SAPCommon
import SAPFiori
import SAPFioriFlows
import SAPFoundation
class SnapshotViewController: UIViewController {}
class ApplicationUIManager {
/// Save ViewController while splash/onboarding screens are presented
@agiguere
agiguere / ApplicationOnboardingSession.swift
Created August 29, 2019 12:30
SAP Fiori for iOS SDK Code Snippet: ApplicationOnboardingSession
import Foundation
import SAPFioriFlows
class ApplicationOnboardingSession: OnboardingSession {
var odataController: OnlineODataController
required init(flow: OnboardingFlow) {
guard let step = flow.steps.first(where: { $0 is ODataOnboardingStep }) as? ODataOnboardingStep, let odataController = step.controller else {
fatalError("Reaching this point is a critical developer error. A successful run must contain an OData step which has a controller")
@agiguere
agiguere / ODataOnboardingStep.swift
Last active November 14, 2019 22:44
SAP Fiori for iOS SDK Code Snippet: ODataOnboardingStep
import Foundation
import SAPCommon
import SAPFioriFlows
import SAPFoundation
class ODataOnboardingStep: OnboardingStep {
var controller: OnlineODataController?
func onboard(context: OnboardingContext, completionHandler: @escaping (OnboardingResult) -> Void) {
configureOData(using: context, completionHandler: completionHandler)
@agiguere
agiguere / SAPURLSession+Extension.swift
Last active August 29, 2019 12:40
SAP Fiori for iOS SDK Code Snippet: SAPURLSession & OnboardingSessionManager
import Foundation
import SAPFoundation
import SAPFioriFlows
public extension SAPURLSession {
/// Unregisters all observers.
func unregisterAllObservers() {
observers.forEach( {unregister($0)} )
}