InKwon James Kim
5 years ago
28 changed files with 1166 additions and 68 deletions
-
216GME Remit.xcodeproj/project.pbxproj
-
92GME Remit/Modules/Profile/Profile.storyboard
-
10GME Remit/Modules/RegisterModules/KYC/kycForm1/User Interface/View/kycForm1.storyboard
-
2GME Remit/Modules/RegisterModules/KYC/kycForm1/User Interface/View/kycForm1ViewController.swift
-
30GME Remit/Modules/RegisterModules/NewRegister/Application Logic/Interactor/NewRegisterInteractor.swift
-
15GME Remit/Modules/RegisterModules/NewRegister/Application Logic/Interactor/NewRegisterInteractorIO.swift
-
13GME Remit/Modules/RegisterModules/NewRegister/Application Logic/Service/NewRegisterService.swift
-
11GME Remit/Modules/RegisterModules/NewRegister/Application Logic/Service/NewRegisterServiceType.swift
-
39GME Remit/Modules/RegisterModules/NewRegister/User Interface/Presenter/NewRegisterPresenter.swift
-
158GME Remit/Modules/RegisterModules/NewRegister/User Interface/View/NewRegister.storyboard
-
97GME Remit/Modules/RegisterModules/NewRegister/User Interface/View/NewRegisterViewController.swift
-
33GME Remit/Modules/RegisterModules/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift
-
13GME Remit/Modules/RegisterModules/NewRegister/User Interface/Wireframe/NewRegisterWireframeInput.swift
-
30GME Remit/Modules/RegisterModules/NewRegisterStep1/Application Logic/Interactor/NewRegisterStep1Interactor.swift
-
15GME Remit/Modules/RegisterModules/NewRegisterStep1/Application Logic/Interactor/NewRegisterStep1InteractorIO.swift
-
13GME Remit/Modules/RegisterModules/NewRegisterStep1/Application Logic/Service/NewRegisterStep1Service.swift
-
11GME Remit/Modules/RegisterModules/NewRegisterStep1/Application Logic/Service/NewRegisterStep1ServiceType.swift
-
67GME Remit/Modules/RegisterModules/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift
-
279GME Remit/Modules/RegisterModules/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard
-
33GME Remit/Modules/RegisterModules/NewRegisterStep1/User Interface/Wireframe/NewRegisterStep1Wireframe.swift
-
13GME Remit/Modules/RegisterModules/NewRegisterStep1/User Interface/Wireframe/NewRegisterStep1WireframeInput.swift
-
8GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/User Interface/View/DomesticRemit.storyboard
-
10GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard
-
11GME Remit/Modules/SideMenu/SideMenu.storyboard
-
3GME Remit/Modules/SplashScreen/User Interface/Wireframe/SplashScreenWireframe.swift
-
4GME Remit/MultiLanguages/ru-RU.lproj/Localizable.strings
-
4GME Remit/MultiLanguages/uz.lproj/Localizable.strings
-
4GME Remit/Supported Files/Info.plist
@ -0,0 +1,30 @@ |
|||
// |
|||
// NewRegisterInteractor.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
class NewRegisterInteractor { |
|||
|
|||
// MARK: Properties |
|||
|
|||
weak var output: NewRegisterInteractorOutput? |
|||
private let service: NewRegisterServiceType |
|||
|
|||
// MARK: Initialization |
|||
|
|||
init(service: NewRegisterServiceType) { |
|||
self.service = service |
|||
} |
|||
|
|||
} |
|||
|
|||
// MARK: NewRegister interactor input interface |
|||
|
|||
extension NewRegisterInteractor: NewRegisterInteractorInput { |
|||
|
|||
} |
@ -0,0 +1,15 @@ |
|||
// |
|||
// NewRegisterInteractorIO.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
protocol NewRegisterInteractorInput: class { |
|||
|
|||
} |
|||
|
|||
protocol NewRegisterInteractorOutput: class { |
|||
|
|||
} |
@ -0,0 +1,13 @@ |
|||
// |
|||
// NewRegisterService.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
class NewRegisterService: NewRegisterServiceType { |
|||
|
|||
} |
@ -0,0 +1,11 @@ |
|||
// |
|||
// NewRegisterServiceType.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
protocol NewRegisterServiceType: class { |
|||
|
|||
} |
@ -0,0 +1,39 @@ |
|||
// |
|||
// NewRegisterPresenter.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import RxSwift |
|||
import RxCocoa |
|||
|
|||
class NewRegisterPresenter: ViewModelType { |
|||
var interactor: NewRegisterInteractorInput? |
|||
var wireframe: NewRegisterWireframeInput? |
|||
|
|||
struct Input {} |
|||
|
|||
struct Output { |
|||
let isError: Driver<Error> |
|||
let isProgress: Driver<Bool> |
|||
} |
|||
|
|||
private let disposeBag = DisposeBag() |
|||
|
|||
private let progressLinker = PublishSubject<Bool>() |
|||
private let errorLinker = PublishSubject<Error>() |
|||
|
|||
func transform(input: Input) -> Output { |
|||
return Output( |
|||
isError: errorLinker.asDriverOnErrorJustComplete(), |
|||
isProgress: progressLinker.asDriverOnErrorJustComplete() |
|||
) |
|||
} |
|||
} |
|||
|
|||
// MARK: NewRegister interactor output interface |
|||
extension NewRegisterPresenter: NewRegisterInteractorOutput { |
|||
|
|||
} |
@ -0,0 +1,158 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Icx-Ri-Xne"> |
|||
<device id="retina4_7" orientation="portrait" appearance="light"/> |
|||
<dependencies> |
|||
<deployment identifier="iOS"/> |
|||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/> |
|||
<capability name="Named colors" minToolsVersion="9.0"/> |
|||
<capability name="Safe area layout guides" minToolsVersion="9.0"/> |
|||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
|||
</dependencies> |
|||
<customFonts key="customFonts"> |
|||
<array key="SanFranciscoDisplay-Medium.otf"> |
|||
<string>SanFranciscoDisplay-Medium</string> |
|||
</array> |
|||
</customFonts> |
|||
<scenes> |
|||
<!--NewRegister--> |
|||
<scene sceneID="R60-Pu-Hpy"> |
|||
<objects> |
|||
<viewController storyboardIdentifier="NewRegisterViewController" title="NewRegister" id="HSb-ou-7T5" customClass="NewRegisterViewController" customModule="GME_Remit" sceneMemberID="viewController"> |
|||
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO"> |
|||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
|||
<subviews> |
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PtY-N9-vct"> |
|||
<rect key="frame" x="0.0" y="44" width="375" height="110"/> |
|||
<subviews> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yuy-WN-CNw"> |
|||
<rect key="frame" x="30" y="30" width="50" height="50"/> |
|||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="width" constant="50" id="CzA-tY-CIT"/> |
|||
<constraint firstAttribute="height" constant="50" id="wm6-Zt-5iz"/> |
|||
</constraints> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="14"/> |
|||
<state key="normal" title="Step 1"> |
|||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
</state> |
|||
</button> |
|||
<button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="evZ-O2-BrJ"> |
|||
<rect key="frame" x="162.5" y="30" width="50" height="50"/> |
|||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="50" id="2gr-dA-uWT"/> |
|||
<constraint firstAttribute="width" constant="50" id="v6I-ox-378"/> |
|||
</constraints> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="14"/> |
|||
<state key="normal" title="Step2"> |
|||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
</state> |
|||
</button> |
|||
<button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mK0-xl-sty"> |
|||
<rect key="frame" x="295" y="30" width="50" height="50"/> |
|||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="50" id="EqB-YD-Ll7"/> |
|||
<constraint firstAttribute="width" constant="50" id="fLk-Oo-lU8"/> |
|||
</constraints> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="14"/> |
|||
<state key="normal" title="Step3"> |
|||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
</state> |
|||
</button> |
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Kk-9D-9Ly"> |
|||
<rect key="frame" x="80" y="54" width="82.5" height="2"/> |
|||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="2" id="TIM-yU-glp"/> |
|||
</constraints> |
|||
</view> |
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cp1-OO-lBV"> |
|||
<rect key="frame" x="212.5" y="54" width="82.5" height="2"/> |
|||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="2" id="nrf-sv-TBn"/> |
|||
</constraints> |
|||
</view> |
|||
</subviews> |
|||
<color key="backgroundColor" name="ThemeMainBackground"/> |
|||
<constraints> |
|||
<constraint firstItem="evZ-O2-BrJ" firstAttribute="top" secondItem="PtY-N9-vct" secondAttribute="top" constant="30" id="1tz-Xy-9LU"/> |
|||
<constraint firstItem="mK0-xl-sty" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="evZ-O2-BrJ" secondAttribute="trailing" constant="30" id="1uN-IX-V6D"/> |
|||
<constraint firstItem="evZ-O2-BrJ" firstAttribute="centerX" secondItem="PtY-N9-vct" secondAttribute="centerX" id="Af2-jq-SdJ"/> |
|||
<constraint firstItem="mK0-xl-sty" firstAttribute="leading" secondItem="cp1-OO-lBV" secondAttribute="trailing" id="Drm-jH-Xrl"/> |
|||
<constraint firstItem="6Kk-9D-9Ly" firstAttribute="leading" secondItem="yuy-WN-CNw" secondAttribute="trailing" id="HD0-t2-VPm"/> |
|||
<constraint firstItem="mK0-xl-sty" firstAttribute="centerY" secondItem="evZ-O2-BrJ" secondAttribute="centerY" id="HJY-Xc-XHc"/> |
|||
<constraint firstItem="cp1-OO-lBV" firstAttribute="centerY" secondItem="mK0-xl-sty" secondAttribute="centerY" id="Jqb-Xc-2B1"/> |
|||
<constraint firstItem="6Kk-9D-9Ly" firstAttribute="centerY" secondItem="yuy-WN-CNw" secondAttribute="centerY" id="O9b-tL-YdW"/> |
|||
<constraint firstItem="yuy-WN-CNw" firstAttribute="leading" secondItem="PtY-N9-vct" secondAttribute="leading" constant="30" id="PxL-Yc-70l"/> |
|||
<constraint firstItem="evZ-O2-BrJ" firstAttribute="centerY" secondItem="PtY-N9-vct" secondAttribute="centerY" id="RVs-Tb-Fs8"/> |
|||
<constraint firstItem="yuy-WN-CNw" firstAttribute="centerY" secondItem="evZ-O2-BrJ" secondAttribute="centerY" id="ddO-BP-KNH"/> |
|||
<constraint firstAttribute="bottom" secondItem="evZ-O2-BrJ" secondAttribute="bottom" constant="30" id="hjZ-ao-Nq1"/> |
|||
<constraint firstItem="evZ-O2-BrJ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yuy-WN-CNw" secondAttribute="trailing" constant="30" id="iGZ-3J-RqP"/> |
|||
<constraint firstAttribute="trailing" secondItem="mK0-xl-sty" secondAttribute="trailing" constant="30" id="rzD-f5-7fl"/> |
|||
<constraint firstItem="cp1-OO-lBV" firstAttribute="leading" secondItem="evZ-O2-BrJ" secondAttribute="trailing" id="shS-Q4-T10"/> |
|||
<constraint firstItem="evZ-O2-BrJ" firstAttribute="leading" secondItem="6Kk-9D-9Ly" secondAttribute="trailing" id="tXA-rz-4U7"/> |
|||
</constraints> |
|||
</view> |
|||
<view opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nOZ-1k-J0A"> |
|||
<rect key="frame" x="10" y="164" width="355" height="493"/> |
|||
<color key="backgroundColor" name="ThemeMainBackground"/> |
|||
</view> |
|||
</subviews> |
|||
<color key="backgroundColor" name="ThemeSubBackground"/> |
|||
<constraints> |
|||
<constraint firstItem="PtY-N9-vct" firstAttribute="leading" secondItem="O1T-1R-Sun" secondAttribute="leading" id="2TS-dX-Z6M"/> |
|||
<constraint firstItem="nOZ-1k-J0A" firstAttribute="top" secondItem="PtY-N9-vct" secondAttribute="bottom" constant="10" id="FYs-8M-OKO"/> |
|||
<constraint firstItem="O1T-1R-Sun" firstAttribute="trailing" secondItem="nOZ-1k-J0A" secondAttribute="trailing" constant="10" id="Ggp-UI-OdP"/> |
|||
<constraint firstItem="PtY-N9-vct" firstAttribute="trailing" secondItem="O1T-1R-Sun" secondAttribute="trailing" id="VKI-14-ua2"/> |
|||
<constraint firstItem="O1T-1R-Sun" firstAttribute="bottom" secondItem="nOZ-1k-J0A" secondAttribute="bottom" constant="10" id="ffD-Zv-QaU"/> |
|||
<constraint firstItem="PtY-N9-vct" firstAttribute="top" secondItem="O1T-1R-Sun" secondAttribute="top" id="hug-cn-S8z"/> |
|||
<constraint firstItem="nOZ-1k-J0A" firstAttribute="leading" secondItem="O1T-1R-Sun" secondAttribute="leading" constant="10" id="r87-qq-rtj"/> |
|||
</constraints> |
|||
<viewLayoutGuide key="safeArea" id="O1T-1R-Sun"/> |
|||
</view> |
|||
<navigationItem key="navigationItem" id="Zkq-b2-U5b"/> |
|||
<connections> |
|||
<outlet property="containerView" destination="nOZ-1k-J0A" id="IQm-3S-6nX"/> |
|||
<outlet property="step1Button" destination="yuy-WN-CNw" id="0YR-ok-glW"/> |
|||
<outlet property="step1ToStep2Line" destination="6Kk-9D-9Ly" id="ePM-94-PX2"/> |
|||
<outlet property="step2Button" destination="evZ-O2-BrJ" id="Vgz-Me-HYB"/> |
|||
<outlet property="step2ToStep3Line" destination="cp1-OO-lBV" id="eSL-uX-yGV"/> |
|||
<outlet property="step3Button" destination="mK0-xl-sty" id="OmQ-Hv-pLG"/> |
|||
</connections> |
|||
</viewController> |
|||
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/> |
|||
</objects> |
|||
<point key="canvasLocation" x="847.20000000000005" y="231.63418290854574"/> |
|||
</scene> |
|||
<!--Navigation Controller--> |
|||
<scene sceneID="kRm-Sb-V1n"> |
|||
<objects> |
|||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="Icx-Ri-Xne" sceneMemberID="viewController"> |
|||
<toolbarItems/> |
|||
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="aoy-UZ-irb"> |
|||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/> |
|||
<autoresizingMask key="autoresizingMask"/> |
|||
</navigationBar> |
|||
<nil name="viewControllers"/> |
|||
<connections> |
|||
<segue destination="HSb-ou-7T5" kind="relationship" relationship="rootViewController" id="cfl-h1-Nwn"/> |
|||
</connections> |
|||
</navigationController> |
|||
<placeholder placeholderIdentifier="IBFirstResponder" id="bpk-Qh-6Pd" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> |
|||
</objects> |
|||
<point key="canvasLocation" x="-92" y="232.53373313343329"/> |
|||
</scene> |
|||
</scenes> |
|||
<resources> |
|||
<namedColor name="ThemeMainBackground"> |
|||
<color red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|||
</namedColor> |
|||
<namedColor name="ThemeSubBackground"> |
|||
<color red="0.93300002813339233" green="0.93300002813339233" blue="0.93300002813339233" alpha="1" colorSpace="custom" customColorSpace="displayP3"/> |
|||
</namedColor> |
|||
</resources> |
|||
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|||
</document> |
@ -0,0 +1,97 @@ |
|||
// |
|||
// NewRegisterViewController.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import UIKit |
|||
import RxSwift |
|||
import RxCocoa |
|||
|
|||
class NewRegisterViewController: UIViewController { |
|||
|
|||
// MARK: Properties |
|||
var presenter: NewRegisterPresenter! |
|||
|
|||
private let disposeBag = DisposeBag() |
|||
// MARK: Computed Properties |
|||
|
|||
// MARK: IBOutlets |
|||
@IBOutlet weak var step1Button: UIButton! |
|||
@IBOutlet weak var step2Button: UIButton! |
|||
@IBOutlet weak var step3Button: UIButton! |
|||
|
|||
@IBOutlet weak var step1ToStep2Line: UIView! |
|||
@IBOutlet weak var step2ToStep3Line: UIView! |
|||
|
|||
@IBOutlet weak var containerView: UIView! |
|||
|
|||
// MARK: VC's Life cycle |
|||
override func viewDidLoad() { |
|||
super.viewDidLoad() |
|||
setup() |
|||
} |
|||
|
|||
override func viewWillAppear(_ animated: Bool) { |
|||
super.viewWillAppear(animated) |
|||
title = "Register GME" |
|||
setupNormalNavigation() |
|||
} |
|||
|
|||
override func viewWillDisappear(_ animated: Bool) { |
|||
super.viewWillDisappear(animated) |
|||
} |
|||
|
|||
// MARK: IBActions |
|||
|
|||
} |
|||
|
|||
// MARK: Other Functions |
|||
extension NewRegisterViewController { |
|||
|
|||
private func setup() { |
|||
setUI() |
|||
setBinding() |
|||
setUIBinding() |
|||
} |
|||
|
|||
private func setUI() { |
|||
step1Button.rounded() |
|||
step2Button.rounded() |
|||
step3Button.rounded() |
|||
|
|||
containerView.layer.cornerRadius = 5 |
|||
let step1 = NewRegisterStep1Wireframe().getMainView() |
|||
move(step1) |
|||
} |
|||
|
|||
private func setUIBinding() { |
|||
|
|||
} |
|||
|
|||
private func setBinding() { |
|||
let input = NewRegisterPresenter.Input() |
|||
let output = presenter.transform(input: input) |
|||
|
|||
output.isError |
|||
.drive( |
|||
onNext: { self.alert(type: .error, message: $0.localizedDescription) } |
|||
).disposed(by: disposeBag) |
|||
|
|||
output.isProgress |
|||
.drive( |
|||
onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() } |
|||
).disposed(by: disposeBag) |
|||
} |
|||
|
|||
private func move(_ viewController: UIViewController) { |
|||
addChild(viewController) |
|||
containerView.addSubview(viewController.view) |
|||
viewController.view.frame = containerView.bounds |
|||
|
|||
viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] |
|||
viewController.didMove(toParent: self) |
|||
} |
|||
} |
@ -0,0 +1,33 @@ |
|||
// |
|||
// NewRegisterWireframe.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import UIKit |
|||
|
|||
class NewRegisterWireframe { |
|||
weak var view: UIViewController! |
|||
} |
|||
|
|||
extension NewRegisterWireframe: NewRegisterWireframeInput { |
|||
|
|||
var storyboardName: String {return "NewRegister"} |
|||
|
|||
func getMainView() -> UIViewController { |
|||
let service = NewRegisterService() |
|||
let interactor = NewRegisterInteractor(service: service) |
|||
let presenter = NewRegisterPresenter() |
|||
let viewController = viewControllerFromStoryboard(of: NewRegisterViewController.self) |
|||
|
|||
viewController.presenter = presenter |
|||
interactor.output = presenter |
|||
presenter.interactor = interactor |
|||
presenter.wireframe = self |
|||
|
|||
view = viewController |
|||
return viewController |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
// |
|||
// NewRegisterWireframeInput.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
protocol NewRegisterWireframeInput: WireframeInput { |
|||
|
|||
} |
@ -0,0 +1,30 @@ |
|||
// |
|||
// NewRegisterStep1Interactor.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
class NewRegisterStep1Interactor { |
|||
|
|||
// MARK: Properties |
|||
|
|||
weak var output: NewRegisterStep1InteractorOutput? |
|||
private let service: NewRegisterStep1ServiceType |
|||
|
|||
// MARK: Initialization |
|||
|
|||
init(service: NewRegisterStep1ServiceType) { |
|||
self.service = service |
|||
} |
|||
|
|||
} |
|||
|
|||
// MARK: NewRegisterStep1 interactor input interface |
|||
|
|||
extension NewRegisterStep1Interactor: NewRegisterStep1InteractorInput { |
|||
|
|||
} |
@ -0,0 +1,15 @@ |
|||
// |
|||
// NewRegisterStep1InteractorIO.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
protocol NewRegisterStep1InteractorInput: class { |
|||
|
|||
} |
|||
|
|||
protocol NewRegisterStep1InteractorOutput: class { |
|||
|
|||
} |
@ -0,0 +1,13 @@ |
|||
// |
|||
// NewRegisterStep1Service.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
class NewRegisterStep1Service: NewRegisterStep1ServiceType { |
|||
|
|||
} |
@ -0,0 +1,11 @@ |
|||
// |
|||
// NewRegisterStep1ServiceType.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
protocol NewRegisterStep1ServiceType: class { |
|||
|
|||
} |
@ -0,0 +1,67 @@ |
|||
// |
|||
// NewRegisterStep1Presenter.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import RxSwift |
|||
import RxCocoa |
|||
import CoreLocation |
|||
|
|||
class NewRegisterStep1Presenter: ViewModelType { |
|||
var interactor: NewRegisterStep1InteractorInput? |
|||
var wireframe: NewRegisterStep1WireframeInput? |
|||
|
|||
struct Input { |
|||
let sendLocation: Driver<CLLocation> |
|||
} |
|||
|
|||
struct Output { |
|||
let isError: Driver<Error> |
|||
let isProgress: Driver<Bool> |
|||
let gpsAddress: Driver<String> |
|||
} |
|||
|
|||
private let disposeBag = DisposeBag() |
|||
|
|||
private let progressLinker = PublishSubject<Bool>() |
|||
private let errorLinker = PublishSubject<Error>() |
|||
private let gpsAddress = PublishSubject<String>() |
|||
|
|||
func transform(input: Input) -> Output { |
|||
input.sendLocation.drive(onNext: { [weak self] in |
|||
self?.progressLinker.onNext(true) |
|||
let geocoder = CLGeocoder() |
|||
let locale = Locale(identifier: "en-US") |
|||
|
|||
geocoder.reverseGeocodeLocation($0, preferredLocale: locale) {(placemarks, error) in |
|||
if let error = error { |
|||
self?.progressLinker.onNext(false) |
|||
self?.errorLinker.onNext(error) |
|||
} |
|||
|
|||
if let address: [CLPlacemark] = placemarks { |
|||
let name = address.last?.name ?? "" |
|||
let locality = address.last?.locality ?? "" |
|||
let administrativeArea = address.last?.administrativeArea ?? "" |
|||
self?.progressLinker.onNext(false) |
|||
self?.gpsAddress.onNext("\(name), \(locality), \(administrativeArea)") |
|||
} |
|||
} |
|||
|
|||
}).disposed(by: disposeBag) |
|||
|
|||
return Output( |
|||
isError: errorLinker.asDriverOnErrorJustComplete(), |
|||
isProgress: progressLinker.asDriverOnErrorJustComplete(), |
|||
gpsAddress: gpsAddress.asDriverOnErrorJustComplete() |
|||
) |
|||
} |
|||
} |
|||
|
|||
// MARK: NewRegisterStep1 interactor output interface |
|||
extension NewRegisterStep1Presenter: NewRegisterStep1InteractorOutput { |
|||
|
|||
} |
@ -0,0 +1,279 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="HSb-ou-7T5"> |
|||
<device id="retina4_7" orientation="portrait" appearance="light"/> |
|||
<dependencies> |
|||
<deployment identifier="iOS"/> |
|||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/> |
|||
<capability name="Named colors" minToolsVersion="9.0"/> |
|||
<capability name="Safe area layout guides" minToolsVersion="9.0"/> |
|||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
|||
</dependencies> |
|||
<customFonts key="customFonts"> |
|||
<array key="SanFranciscoDisplay-Medium.otf"> |
|||
<string>SanFranciscoDisplay-Medium</string> |
|||
</array> |
|||
<array key="SanFranciscoDisplay-Regular.otf"> |
|||
<string>SanFranciscoDisplay-Regular</string> |
|||
</array> |
|||
</customFonts> |
|||
<scenes> |
|||
<!--NewRegisterStep1--> |
|||
<scene sceneID="R60-Pu-Hpy"> |
|||
<objects> |
|||
<viewController storyboardIdentifier="NewRegisterStep1ViewController" title="NewRegisterStep1" id="HSb-ou-7T5" customClass="NewRegisterStep1ViewController" customModule="GME_Remit" sceneMemberID="viewController"> |
|||
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO"> |
|||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
|||
<subviews> |
|||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oNZ-lD-63n"> |
|||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
|||
<subviews> |
|||
<view contentMode="scaleToFill" placeholderIntrinsicWidth="375" placeholderIntrinsicHeight="594.5" translatesAutoresizingMaskIntoConstraints="NO" id="Eo4-5K-LDm"> |
|||
<rect key="frame" x="0.0" y="0.0" width="375" height="636"/> |
|||
<subviews> |
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CjJ-RL-q3P"> |
|||
<rect key="frame" x="10" y="10" width="355" height="616"/> |
|||
<subviews> |
|||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="2uA-JL-3Oz"> |
|||
<rect key="frame" x="20" y="20" width="315" height="576"/> |
|||
<subviews> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your Personal Information" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gYv-nJ-MpW"> |
|||
<rect key="frame" x="0.0" y="0.0" width="315" height="22.5"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="19"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="Nzh-by-klV"> |
|||
<rect key="frame" x="0.0" y="27.5" width="315" height="416"/> |
|||
<subviews> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your full name (Shown in your id card)" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="M26-6H-7g6" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="0.0" width="315" height="45"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="45" id="lFh-dL-76x"/> |
|||
</constraints> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your gender" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Z0K-Lz-Cz8" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="53" width="315" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your date of birth" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="aqN-64-wvm" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="106" width="315" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your mobile number" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="3dc-9t-9V4" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="159" width="315" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits" keyboardType="phonePad"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your e-mail" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="ci5-SP-G1k" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="212" width="315" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits" keyboardType="emailAddress"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your native country" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="sFH-x9-kNl" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="265" width="315" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PQu-1T-DIt"> |
|||
<rect key="frame" x="0.0" y="318" width="315" height="45"/> |
|||
<subviews> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your address" textAlignment="natural" minimumFontSize="12" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="0zs-zK-6RT" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="0.0" width="283" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QVY-pS-2JS"> |
|||
<rect key="frame" x="283" y="0.0" width="32" height="45"/> |
|||
<subviews> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PB1-h0-XyN"> |
|||
<rect key="frame" x="5" y="13" width="25" height="25"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="25" id="8dH-ah-pk2"/> |
|||
<constraint firstAttribute="width" constant="25" id="WHh-69-m5b"/> |
|||
</constraints> |
|||
<state key="normal" image="ic_agentLocation"/> |
|||
<connections> |
|||
<action selector="touchGPSButton:" destination="HSb-ou-7T5" eventType="touchUpInside" id="7oC-VA-3c8"/> |
|||
</connections> |
|||
</button> |
|||
</subviews> |
|||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
|||
<constraints> |
|||
<constraint firstItem="PB1-h0-XyN" firstAttribute="top" secondItem="QVY-pS-2JS" secondAttribute="top" constant="13" id="1cc-sL-PrB"/> |
|||
<constraint firstItem="PB1-h0-XyN" firstAttribute="leading" secondItem="QVY-pS-2JS" secondAttribute="leading" constant="5" id="Wpe-wu-NEA"/> |
|||
<constraint firstAttribute="bottom" secondItem="PB1-h0-XyN" secondAttribute="bottom" constant="7" id="kRR-4C-0xq"/> |
|||
<constraint firstAttribute="trailing" secondItem="PB1-h0-XyN" secondAttribute="trailing" constant="2" id="l56-vT-053"/> |
|||
</constraints> |
|||
</view> |
|||
</subviews> |
|||
</stackView> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KNi-XU-GwS"> |
|||
<rect key="frame" x="0.0" y="371" width="315" height="45"/> |
|||
<fontDescription key="fontDescription" type="system" pointSize="17"/> |
|||
<nil key="textColor"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
</subviews> |
|||
</stackView> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GME Account" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PDD-52-uMs"> |
|||
<rect key="frame" x="0.0" y="448.5" width="315" height="22.5"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="19"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="WUI-HZ-QMr"> |
|||
<rect key="frame" x="0.0" y="476" width="315" height="100"/> |
|||
<subviews> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your ID using GME" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="arj-sv-FoI" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="0.0" width="315" height="45"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="45" id="Wou-NI-wCE"/> |
|||
</constraints> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter your password using GME" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vD6-pU-McH" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target"> |
|||
<rect key="frame" x="0.0" y="55" width="315" height="45"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/> |
|||
<textInputTraits key="textInputTraits"/> |
|||
<userDefinedRuntimeAttributes> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isShowTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isUseTitle" value="NO"/> |
|||
<userDefinedRuntimeAttribute type="boolean" keyPath="isLineHidden" value="NO"/> |
|||
</userDefinedRuntimeAttributes> |
|||
</textField> |
|||
</subviews> |
|||
</stackView> |
|||
</subviews> |
|||
</stackView> |
|||
</subviews> |
|||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
|||
<constraints> |
|||
<constraint firstItem="2uA-JL-3Oz" firstAttribute="top" secondItem="CjJ-RL-q3P" secondAttribute="top" constant="20" id="83t-hD-1zm"/> |
|||
<constraint firstItem="2uA-JL-3Oz" firstAttribute="leading" secondItem="CjJ-RL-q3P" secondAttribute="leading" constant="20" id="Lar-wD-irZ"/> |
|||
<constraint firstAttribute="bottom" secondItem="2uA-JL-3Oz" secondAttribute="bottom" constant="20" id="T9v-Ee-F6M"/> |
|||
<constraint firstAttribute="trailing" secondItem="2uA-JL-3Oz" secondAttribute="trailing" constant="20" id="YUd-M1-uik"/> |
|||
</constraints> |
|||
</view> |
|||
</subviews> |
|||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
|||
<constraints> |
|||
<constraint firstItem="CjJ-RL-q3P" firstAttribute="top" secondItem="Eo4-5K-LDm" secondAttribute="top" constant="10" id="GXR-BE-TSC"/> |
|||
<constraint firstAttribute="trailing" secondItem="CjJ-RL-q3P" secondAttribute="trailing" constant="10" id="PdB-Qg-Fm3"/> |
|||
<constraint firstAttribute="bottom" secondItem="CjJ-RL-q3P" secondAttribute="bottom" constant="10" id="aKY-Bl-CnU"/> |
|||
<constraint firstItem="CjJ-RL-q3P" firstAttribute="leading" secondItem="Eo4-5K-LDm" secondAttribute="leading" constant="10" id="amE-1C-NK8"/> |
|||
</constraints> |
|||
</view> |
|||
<button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="78U-R0-1uE"> |
|||
<rect key="frame" x="10" y="636" width="355" height="50"/> |
|||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="50" id="2xp-BR-MpY"/> |
|||
</constraints> |
|||
<state key="normal" title="Continue"> |
|||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
</state> |
|||
</button> |
|||
</subviews> |
|||
<constraints> |
|||
<constraint firstAttribute="trailing" secondItem="78U-R0-1uE" secondAttribute="trailing" constant="10" id="6Gw-cf-dEK"/> |
|||
<constraint firstItem="78U-R0-1uE" firstAttribute="leading" secondItem="oNZ-lD-63n" secondAttribute="leading" constant="10" id="9sm-il-k0B"/> |
|||
<constraint firstItem="Eo4-5K-LDm" firstAttribute="width" secondItem="oNZ-lD-63n" secondAttribute="width" id="Cmq-gB-HZq"/> |
|||
<constraint firstAttribute="trailing" secondItem="Eo4-5K-LDm" secondAttribute="trailing" id="Ng1-r2-Mvi"/> |
|||
<constraint firstItem="Eo4-5K-LDm" firstAttribute="leading" secondItem="oNZ-lD-63n" secondAttribute="leading" id="TH1-zm-IKT"/> |
|||
<constraint firstItem="Eo4-5K-LDm" firstAttribute="top" secondItem="oNZ-lD-63n" secondAttribute="top" id="W6G-uV-VFc"/> |
|||
<constraint firstAttribute="bottom" secondItem="78U-R0-1uE" secondAttribute="bottom" constant="10" id="hNa-Za-eRy"/> |
|||
<constraint firstItem="78U-R0-1uE" firstAttribute="top" secondItem="Eo4-5K-LDm" secondAttribute="bottom" id="whq-BD-LdE"/> |
|||
</constraints> |
|||
</scrollView> |
|||
</subviews> |
|||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstAttribute="bottom" secondItem="oNZ-lD-63n" secondAttribute="bottom" id="46c-gG-7XB"/> |
|||
<constraint firstItem="oNZ-lD-63n" firstAttribute="top" secondItem="9Uc-9s-KgO" secondAttribute="top" id="O0K-yg-qO1"/> |
|||
<constraint firstItem="oNZ-lD-63n" firstAttribute="trailing" secondItem="O1T-1R-Sun" secondAttribute="trailing" id="OEL-cp-Eip"/> |
|||
<constraint firstItem="oNZ-lD-63n" firstAttribute="leading" secondItem="O1T-1R-Sun" secondAttribute="leading" id="Z5o-p2-HA7"/> |
|||
</constraints> |
|||
<viewLayoutGuide key="safeArea" id="O1T-1R-Sun"/> |
|||
</view> |
|||
<connections> |
|||
<outlet property="addressTextField" destination="0zs-zK-6RT" id="lij-eS-DuP"/> |
|||
<outlet property="continueButton" destination="78U-R0-1uE" id="LLF-4Y-MGz"/> |
|||
<outlet property="dobTextField" destination="aqN-64-wvm" id="oSh-6h-FQH"/> |
|||
<outlet property="emailTextField" destination="ci5-SP-G1k" id="tTo-Oz-404"/> |
|||
<outlet property="genderTextField" destination="Z0K-Lz-Cz8" id="91L-iH-oaP"/> |
|||
<outlet property="gpsButton" destination="PB1-h0-XyN" id="T5g-gF-12i"/> |
|||
<outlet property="idTextField" destination="arj-sv-FoI" id="I6x-x8-jtV"/> |
|||
<outlet property="mobileTextField" destination="3dc-9t-9V4" id="9Uu-fv-J1C"/> |
|||
<outlet property="nativeCountryTextField" destination="sFH-x9-kNl" id="bcw-uh-9t6"/> |
|||
<outlet property="passwordTextField" destination="vD6-pU-McH" id="hlu-AJ-vnr"/> |
|||
<outlet property="userNameTextField" destination="M26-6H-7g6" id="SPp-ol-lfU"/> |
|||
</connections> |
|||
</viewController> |
|||
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/> |
|||
</objects> |
|||
<point key="canvasLocation" x="-92" y="232.53373313343329"/> |
|||
</scene> |
|||
</scenes> |
|||
<resources> |
|||
<image name="ic_agentLocation" width="13" height="21"/> |
|||
<namedColor name="ThemeText"> |
|||
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|||
</namedColor> |
|||
</resources> |
|||
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|||
</document> |
@ -0,0 +1,33 @@ |
|||
// |
|||
// NewRegisterStep1Wireframe.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import UIKit |
|||
|
|||
class NewRegisterStep1Wireframe { |
|||
weak var view: UIViewController! |
|||
} |
|||
|
|||
extension NewRegisterStep1Wireframe: NewRegisterStep1WireframeInput { |
|||
|
|||
var storyboardName: String {return "NewRegisterStep1"} |
|||
|
|||
func getMainView() -> UIViewController { |
|||
let service = NewRegisterStep1Service() |
|||
let interactor = NewRegisterStep1Interactor(service: service) |
|||
let presenter = NewRegisterStep1Presenter() |
|||
let viewController = viewControllerFromStoryboard(of: NewRegisterStep1ViewController.self) |
|||
|
|||
viewController.presenter = presenter |
|||
interactor.output = presenter |
|||
presenter.interactor = interactor |
|||
presenter.wireframe = self |
|||
|
|||
view = viewController |
|||
return viewController |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
// |
|||
// NewRegisterStep1WireframeInput.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/02. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
protocol NewRegisterStep1WireframeInput: WireframeInput { |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue