Skip to content

Instantly share code, notes, and snippets.

View arifinfrds's full-sized avatar

Arifin Firdaus arifinfrds

View GitHub Profile
@arifinfrds
arifinfrds / DataService.swift
Created July 15, 2018 15:08
arifinfrds/iOS-MVCS-Alamofire/MVCS Alamofire/store/DataService.swift
import Foundation
import Alamofire
struct DataService {
// MARK: - Singleton
static let shared = DataService()
// MARK: - URL
private var photoUrl = "https://jsonplaceholder.typicode.com/photos"
@arifinfrds
arifinfrds / ViewController.swift
Created July 15, 2018 15:09
arifinfrds/iOS-MVCS-Alamofire/MVCS Alamofire/controller/ViewController.swift
import UIKit
import SDWebImage
class ViewController: UIViewController {
// MARK: - Outlet
@IBOutlet weak var headerImageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var subtitleLabel: UILabel!
@arifinfrds
arifinfrds / Photo.swift
Last active August 1, 2018 03:19
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/model/
import Foundation
import Alamofire
struct Photo: Codable {
let albumID: Int?
let id: Int?
let title: String?
let url: String?
let thumbnailURL: String?
@arifinfrds
arifinfrds / DataService.swift
Created August 1, 2018 03:22
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/service/
import Foundation
import Alamofire
struct DataService {
// MARK: - Singleton
static let shared = DataService()
// MARK: - URL
private var photoUrl = "https://jsonplaceholder.typicode.com/photos"
@arifinfrds
arifinfrds / PhotoViewModel.swift
Created August 1, 2018 03:25
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/view model/PhotoViewModel.swift
import Foundation
class PhotoViewModel {
// MARK: - Properties
private var photo: Photo? {
didSet {
guard let p = photo else { return }
self.setupText(with: p)
self.didFinishFetch?()
@arifinfrds
arifinfrds / ViewController.swift
Created August 1, 2018 03:28
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/view/controller/ViewController.swift
import UIKit
import SDWebImage
class ViewController: UIViewController {
// MARK: - Outlet
@IBOutlet weak var headerImageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var subtitleLabel: UILabel!
@arifinfrds
arifinfrds / LoginVC.swift
Created September 10, 2018 17:18
arifinfrds/iOS-XCUITestsDemo/XCUITestsDemo/LoginVC.swift
class LoginVC: UIViewController {
// MARK: - Outlets
@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
// MARK: - View life cycle
override func viewDidLoad() {
super.viewDidLoad()
@arifinfrds
arifinfrds / ViewController+UITableViewDelegate.swift
Created January 1, 2019 02:53
Simple Example of Clean Method Implementation.
import UIKit
extension ViewController: UITableViewDelegate {
// Some UITableViewDelegate method
// ...
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let verticalOffset = tableView.contentOffset.y
verticalOffset >= 64
@arifinfrds
arifinfrds / ViewController+UITableViewDelegate(Not clean).swift
Created January 1, 2019 02:56
Simple example of not clean ethod Implementation.
import UIKit
extension ViewController: UITableViewDelegate {
// Some UITableViewDelegate methods
// ...
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let verticalOffset = tableView.contentOffset.y
if verticalOffset >= 64 {
@arifinfrds
arifinfrds / makeSUTHelperMethod.swift
Created November 6, 2020 13:36
Example of makeSUT helper method
private func makeSUT() -> LoadLanguageIdPreferencesUseCase {
let analytic: Inalytic = AnalayticSpy()
let storageClient: IUserDefaults = UserDefaultsSpy()
let serviceClient: IHTTPClient = HTTPClientSpy()
let storage: TextToSpeechPreferencesStorage = TextToSpeechPreferencesStorageImpl(client: storageClient)
let service: TextToSpeechPreferencesService = TextToSpeechPreferencesServiceImpl(client: serviceClient)
let repository: TextToSpeechPreferencesRepository = TextToSpeechPreferencesRepositoryImpl(
storage: storage,
service: service
)