InKwon James Kim
5 years ago
12 changed files with 550 additions and 3 deletions
-
30GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift
-
15GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift
-
13GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift
-
11GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift
-
39GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift
-
226GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreement.storyboard
-
73GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift
-
47GME Remit/Modules/ManageAgreement/User Interface/Wireframe/ManageAgreementWireframe.swift
-
13GME Remit/Modules/ManageAgreement/User Interface/Wireframe/ManageAgreementWireframeInput.swift
-
6GME Remit/MultiLanguages/uz.lproj/Localizable.strings
-
42GME Remit/Utilities/CustomUI/PDFVIewer/PDFViewController.swift
-
38GME Remit/Utilities/CustomUI/PDFVIewer/PDFViewController.xib
@ -0,0 +1,30 @@ |
|||
// |
|||
// ManageAgreementInteractor.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
class ManageAgreementInteractor { |
|||
|
|||
// MARK: Properties |
|||
|
|||
weak var output: ManageAgreementInteractorOutput? |
|||
private let service: ManageAgreementServiceType |
|||
|
|||
// MARK: Initialization |
|||
|
|||
init(service: ManageAgreementServiceType) { |
|||
self.service = service |
|||
} |
|||
|
|||
} |
|||
|
|||
// MARK: ManageAgreement interactor input interface |
|||
|
|||
extension ManageAgreementInteractor: ManageAgreementInteractorInput { |
|||
|
|||
} |
@ -0,0 +1,15 @@ |
|||
// |
|||
// ManageAgreementInteractorIO.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
protocol ManageAgreementInteractorInput: class { |
|||
|
|||
} |
|||
|
|||
protocol ManageAgreementInteractorOutput: class { |
|||
|
|||
} |
@ -0,0 +1,13 @@ |
|||
// |
|||
// ManageAgreementService.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
class ManageAgreementService: ManageAgreementServiceType { |
|||
|
|||
} |
@ -0,0 +1,11 @@ |
|||
// |
|||
// ManageAgreementServiceType.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
protocol ManageAgreementServiceType: class { |
|||
|
|||
} |
@ -0,0 +1,39 @@ |
|||
// |
|||
// ManageAgreementPresenter.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import RxSwift |
|||
import RxCocoa |
|||
|
|||
class ManageAgreementPresenter: ViewModelType { |
|||
var interactor: ManageAgreementInteractorInput? |
|||
var wireframe: ManageAgreementWireframeInput? |
|||
|
|||
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: ManageAgreement interactor output interface |
|||
extension ManageAgreementPresenter: ManageAgreementInteractorOutput { |
|||
|
|||
} |
@ -0,0 +1,226 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ytk-Td-pWB"> |
|||
<device id="retina4_7" orientation="portrait" appearance="light"/> |
|||
<dependencies> |
|||
<deployment identifier="iOS"/> |
|||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> |
|||
<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-Bold.otf"> |
|||
<string>SanFranciscoDisplay-Bold</string> |
|||
</array> |
|||
<array key="SanFranciscoDisplay-Medium.otf"> |
|||
<string>SanFranciscoDisplay-Medium</string> |
|||
</array> |
|||
<array key="SanFranciscoDisplay-Regular.otf"> |
|||
<string>SanFranciscoDisplay-Regular</string> |
|||
</array> |
|||
</customFonts> |
|||
<scenes> |
|||
<!--ManageAgreement--> |
|||
<scene sceneID="R60-Pu-Hpy"> |
|||
<objects> |
|||
<viewController storyboardIdentifier="ManageAgreementViewController" title="ManageAgreement" id="HSb-ou-7T5" customClass="ManageAgreementViewController" 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="QCm-8w-GYq"> |
|||
<rect key="frame" x="10" y="54" width="355" height="543"/> |
|||
<subviews> |
|||
<view contentMode="scaleToFill" placeholderIntrinsicWidth="319" placeholderIntrinsicHeight="543" translatesAutoresizingMaskIntoConstraints="NO" id="QNE-oF-Dg2"> |
|||
<rect key="frame" x="0.0" y="0.0" width="355" height="543"/> |
|||
<subviews> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="이용약관에 동의해 주세요." textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GOO-es-RZU"> |
|||
<rect key="frame" x="20" y="20" width="315" height="23.5"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Bold" family="San Francisco Display" pointSize="20"/> |
|||
<color key="textColor" name="ThemeBlack"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wU8-B5-6aq"> |
|||
<rect key="frame" x="20" y="73.5" width="315" height="119"/> |
|||
<string key="text">GME의 해외 송금 및 국내 송금 등의 서비스를 원활하게 이용하기 위하여 고객님의 계좌에 대한 출금이체 동의가 필요합니다. 해외 송금, 국내 송금 등의 서비스 이용시 출금에 동의 하신 계좌에서 오픈뱅킹 또는 펌뱅킹을 통하여 출금이체가 진행됩니다.</string> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="17"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="K4B-9a-ffc"> |
|||
<rect key="frame" x="20" y="363" width="239" height="160"/> |
|||
<subviews> |
|||
<stackView opaque="NO" contentMode="scaleToFill" spacing="9" translatesAutoresizingMaskIntoConstraints="NO" id="j2J-RS-Yev"> |
|||
<rect key="frame" x="0.0" y="0.0" width="239" height="48"/> |
|||
<subviews> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LHu-RV-7ir"> |
|||
<rect key="frame" x="0.0" y="0.0" width="40" height="48"/> |
|||
<constraints> |
|||
<constraint firstAttribute="width" constant="40" id="spN-XR-6lB"/> |
|||
</constraints> |
|||
<color key="tintColor" name="ThemeRed"/> |
|||
<state key="normal" image="checkBlue"> |
|||
<color key="titleColor" name="ThemeRed"/> |
|||
</state> |
|||
</button> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="금융기관 출금이체 약관" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Aey-Kb-6WL"> |
|||
<rect key="frame" x="49" y="0.0" width="138.5" height="48"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NZU-mJ-HT0"> |
|||
<rect key="frame" x="196.5" y="0.0" width="42.5" height="48"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/> |
|||
<state key="normal" title=">"> |
|||
<color key="titleColor" name="ThemeText"/> |
|||
</state> |
|||
</button> |
|||
</subviews> |
|||
</stackView> |
|||
<stackView opaque="NO" contentMode="scaleToFill" spacing="9" translatesAutoresizingMaskIntoConstraints="NO" id="M4y-4H-eAi"> |
|||
<rect key="frame" x="0.0" y="56" width="239" height="48"/> |
|||
<subviews> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XdN-dl-bM9"> |
|||
<rect key="frame" x="0.0" y="0.0" width="40" height="48"/> |
|||
<constraints> |
|||
<constraint firstAttribute="width" constant="40" id="9f3-wM-yfM"/> |
|||
</constraints> |
|||
<color key="tintColor" name="ThemeRed"/> |
|||
<state key="normal" image="checkBlue"> |
|||
<color key="titleColor" name="ThemeRed"/> |
|||
</state> |
|||
</button> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="개인정보 제 3자 제공동의" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAc-eR-jd8"> |
|||
<rect key="frame" x="49" y="0.0" width="151" height="48"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s3z-no-DTR"> |
|||
<rect key="frame" x="209" y="0.0" width="30" height="48"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/> |
|||
<state key="normal" title=">"> |
|||
<color key="titleColor" name="ThemeText"/> |
|||
</state> |
|||
</button> |
|||
</subviews> |
|||
</stackView> |
|||
<stackView opaque="NO" contentMode="scaleToFill" spacing="9" translatesAutoresizingMaskIntoConstraints="NO" id="l5s-kr-JwG"> |
|||
<rect key="frame" x="0.0" y="112" width="239" height="48"/> |
|||
<subviews> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DWq-Dh-iW4"> |
|||
<rect key="frame" x="0.0" y="0.0" width="40" height="48"/> |
|||
<constraints> |
|||
<constraint firstAttribute="width" constant="40" id="97o-fa-Yvy"/> |
|||
</constraints> |
|||
<color key="tintColor" name="ThemeRed"/> |
|||
<state key="normal" image="checkBlue"> |
|||
<color key="titleColor" name="ThemeRed"/> |
|||
</state> |
|||
</button> |
|||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="은행 출금이체 약관" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XNJ-Na-jCR"> |
|||
<rect key="frame" x="49" y="0.0" width="112.5" height="48"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/> |
|||
<color key="textColor" name="ThemeText"/> |
|||
<nil key="highlightedColor"/> |
|||
</label> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yo1-TL-zyc"> |
|||
<rect key="frame" x="170.5" y="0.0" width="68.5" height="48"/> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/> |
|||
<state key="normal" title=">"> |
|||
<color key="titleColor" name="ThemeText"/> |
|||
</state> |
|||
</button> |
|||
</subviews> |
|||
</stackView> |
|||
</subviews> |
|||
</stackView> |
|||
</subviews> |
|||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
|||
<constraints> |
|||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="K4B-9a-ffc" secondAttribute="trailing" constant="20" id="0fh-vD-5wK"/> |
|||
<constraint firstAttribute="bottom" secondItem="K4B-9a-ffc" secondAttribute="bottom" constant="20" id="9dL-JT-XGc"/> |
|||
<constraint firstItem="wU8-B5-6aq" firstAttribute="leading" secondItem="QNE-oF-Dg2" secondAttribute="leading" constant="20" id="JvY-oF-2Kx"/> |
|||
<constraint firstItem="wU8-B5-6aq" firstAttribute="top" secondItem="GOO-es-RZU" secondAttribute="bottom" constant="30" id="RvU-Ni-A6S"/> |
|||
<constraint firstItem="GOO-es-RZU" firstAttribute="top" secondItem="QNE-oF-Dg2" secondAttribute="top" constant="20" id="YBm-hE-Pe0"/> |
|||
<constraint firstItem="K4B-9a-ffc" firstAttribute="leading" secondItem="QNE-oF-Dg2" secondAttribute="leading" constant="20" id="Yma-EY-VgS"/> |
|||
<constraint firstAttribute="trailing" secondItem="GOO-es-RZU" secondAttribute="trailing" constant="20" id="bAh-C5-7e3"/> |
|||
<constraint firstItem="K4B-9a-ffc" firstAttribute="top" relation="greaterThanOrEqual" secondItem="wU8-B5-6aq" secondAttribute="bottom" constant="30" id="gDu-2h-6rr"/> |
|||
<constraint firstItem="GOO-es-RZU" firstAttribute="leading" secondItem="QNE-oF-Dg2" secondAttribute="leading" constant="20" id="jPv-T7-sD2"/> |
|||
<constraint firstAttribute="trailing" secondItem="wU8-B5-6aq" secondAttribute="trailing" constant="20" id="oNl-Si-92c"/> |
|||
</constraints> |
|||
</view> |
|||
</subviews> |
|||
<constraints> |
|||
<constraint firstItem="QNE-oF-Dg2" firstAttribute="leading" secondItem="QCm-8w-GYq" secondAttribute="leading" id="2Fg-oZ-X5Y"/> |
|||
<constraint firstItem="QNE-oF-Dg2" firstAttribute="width" secondItem="QCm-8w-GYq" secondAttribute="width" id="7cL-nR-FIF"/> |
|||
<constraint firstAttribute="trailing" secondItem="QNE-oF-Dg2" secondAttribute="trailing" id="NUL-7k-oe6"/> |
|||
<constraint firstAttribute="bottom" secondItem="QNE-oF-Dg2" secondAttribute="bottom" id="io9-3y-PhT"/> |
|||
<constraint firstItem="QNE-oF-Dg2" firstAttribute="top" secondItem="QCm-8w-GYq" secondAttribute="top" id="rEX-UP-wtm"/> |
|||
</constraints> |
|||
</scrollView> |
|||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YxY-tL-LNp"> |
|||
<rect key="frame" x="10" y="607" width="355" height="50"/> |
|||
<color key="backgroundColor" name="ThemeRed"/> |
|||
<constraints> |
|||
<constraint firstAttribute="height" constant="50" id="ovz-hv-tiz"/> |
|||
</constraints> |
|||
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/> |
|||
<state key="normal" title="동의"> |
|||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
</state> |
|||
</button> |
|||
</subviews> |
|||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
<constraints> |
|||
<constraint firstItem="O1T-1R-Sun" firstAttribute="trailing" secondItem="YxY-tL-LNp" secondAttribute="trailing" constant="10" id="0d1-Ha-rwv"/> |
|||
<constraint firstAttribute="trailing" secondItem="QCm-8w-GYq" secondAttribute="trailing" constant="10" id="6AJ-KL-uF2"/> |
|||
<constraint firstItem="O1T-1R-Sun" firstAttribute="bottom" secondItem="YxY-tL-LNp" secondAttribute="bottom" constant="10" id="Edp-5g-SCB"/> |
|||
<constraint firstItem="QCm-8w-GYq" firstAttribute="top" secondItem="O1T-1R-Sun" secondAttribute="top" constant="10" id="YIO-Ur-ddb"/> |
|||
<constraint firstItem="YxY-tL-LNp" firstAttribute="leading" secondItem="O1T-1R-Sun" secondAttribute="leading" constant="10" id="hOf-Vv-NH1"/> |
|||
<constraint firstItem="QCm-8w-GYq" firstAttribute="leading" secondItem="9Uc-9s-KgO" secondAttribute="leading" constant="10" id="irW-Ts-6hU"/> |
|||
<constraint firstItem="YxY-tL-LNp" firstAttribute="top" secondItem="QCm-8w-GYq" secondAttribute="bottom" constant="10" id="uSg-Rk-SHK"/> |
|||
</constraints> |
|||
<viewLayoutGuide key="safeArea" id="O1T-1R-Sun"/> |
|||
</view> |
|||
<navigationItem key="navigationItem" id="GWB-QQ-gob"/> |
|||
<size key="freeformSize" width="375" height="667"/> |
|||
</viewController> |
|||
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/> |
|||
</objects> |
|||
<point key="canvasLocation" x="847.20000000000005" y="232.53373313343329"/> |
|||
</scene> |
|||
<!--Navigation Controller--> |
|||
<scene sceneID="4hD-IF-Ole"> |
|||
<objects> |
|||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="ytk-Td-pWB" sceneMemberID="viewController"> |
|||
<toolbarItems/> |
|||
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="3Rq-r7-gWU"> |
|||
<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="cBk-nq-fPm"/> |
|||
</connections> |
|||
</navigationController> |
|||
<placeholder placeholderIdentifier="IBFirstResponder" id="amX-JA-cxe" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> |
|||
</objects> |
|||
<point key="canvasLocation" x="-92" y="232.53373313343329"/> |
|||
</scene> |
|||
</scenes> |
|||
<resources> |
|||
<image name="checkBlue" width="24" height="24"/> |
|||
<namedColor name="ThemeBlack"> |
|||
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
|||
</namedColor> |
|||
<namedColor name="ThemeRed"> |
|||
<color red="0.92941176470588238" green="0.10588235294117647" blue="0.14117647058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|||
</namedColor> |
|||
<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,73 @@ |
|||
// |
|||
// ManageAgreementViewController.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import UIKit |
|||
import RxSwift |
|||
import RxCocoa |
|||
|
|||
class ManageAgreementViewController: UIViewController { |
|||
|
|||
// MARK: Properties |
|||
var presenter: ManageAgreementPresenter! |
|||
|
|||
private let disposeBag = DisposeBag() |
|||
|
|||
// MARK: Computed Properties |
|||
|
|||
// MARK: IBOutlets |
|||
|
|||
// MARK: VC's Life cycle |
|||
override func viewDidLoad() { |
|||
super.viewDidLoad() |
|||
setup() |
|||
} |
|||
|
|||
override func viewWillAppear(_ animated: Bool) { |
|||
super.viewWillAppear(animated) |
|||
} |
|||
|
|||
override func viewWillDisappear(_ animated: Bool) { |
|||
super.viewWillDisappear(animated) |
|||
} |
|||
|
|||
// MARK: IBActions |
|||
|
|||
} |
|||
|
|||
// MARK: Other Functions |
|||
extension ManageAgreementViewController { |
|||
|
|||
private func setup() { |
|||
setUI() |
|||
setBinding() |
|||
setUIBinding() |
|||
} |
|||
|
|||
private func setUI() { |
|||
|
|||
} |
|||
|
|||
private func setUIBinding() { |
|||
|
|||
} |
|||
|
|||
private func setBinding() { |
|||
let input = ManageAgreementPresenter.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) |
|||
} |
|||
} |
@ -0,0 +1,47 @@ |
|||
// |
|||
// ManageAgreementWireframe.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import UIKit |
|||
|
|||
enum PDFType { |
|||
case test1 |
|||
} |
|||
|
|||
class ManageAgreementWireframe { |
|||
weak var view: UIViewController! |
|||
} |
|||
|
|||
extension ManageAgreementWireframe: ManageAgreementWireframeInput { |
|||
|
|||
var storyboardName: String {return "ManageAgreement"} |
|||
|
|||
func getMainView() -> UIViewController { |
|||
let service = ManageAgreementService() |
|||
let interactor = ManageAgreementInteractor(service: service) |
|||
let presenter = ManageAgreementPresenter() |
|||
let viewController = viewControllerFromStoryboard(of: ManageAgreementViewController.self) |
|||
|
|||
viewController.presenter = presenter |
|||
interactor.output = presenter |
|||
presenter.interactor = interactor |
|||
presenter.wireframe = self |
|||
|
|||
view = viewController |
|||
return viewController |
|||
} |
|||
|
|||
func pushWithNavigation(on source: UIViewController) { |
|||
let vc = getMainView() |
|||
source.navigationController?.pushViewController(vc, animated: true) |
|||
} |
|||
|
|||
func goAgreementPDF(type: PDFType) { |
|||
let pdfVC = PDFViewController(nibName: "PDFViewController", bundle: nil) |
|||
view.navigationController?.pushViewController(pdfVC, animated: true) |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
// |
|||
// ManageAgreementWireframeInput.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
|
|||
protocol ManageAgreementWireframeInput: WireframeInput { |
|||
func goAgreementPDF(type: PDFType) |
|||
} |
@ -0,0 +1,42 @@ |
|||
// |
|||
// PDFViewController.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon James Kim on 2019/12/23. |
|||
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import UIKit |
|||
import PDFKit |
|||
|
|||
struct PDFConfiguration { |
|||
var title = "PDF TITLE" |
|||
var autoScales = true |
|||
} |
|||
|
|||
class PDFViewController: UIViewController { |
|||
|
|||
@IBOutlet private weak var pdfView: PDFView! |
|||
|
|||
var url: String? |
|||
private var configure = PDFConfiguration() |
|||
|
|||
override func viewDidLoad() { |
|||
super.viewDidLoad() |
|||
|
|||
pdfView.autoScales = configure.autoScales |
|||
} |
|||
|
|||
override func viewWillAppear(_ animated: Bool) { |
|||
super.viewWillAppear(animated) |
|||
|
|||
setupNormalNavigation() |
|||
|
|||
title = configure.title |
|||
|
|||
guard let urlString = url, let url = URL(string: urlString) else { return } |
|||
let document = PDFDocument(url: url) |
|||
|
|||
pdfView.document = document |
|||
} |
|||
} |
@ -0,0 +1,38 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
|||
<device id="retina6_1" orientation="portrait" appearance="light"/> |
|||
<dependencies> |
|||
<deployment identifier="iOS"/> |
|||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> |
|||
<capability name="Safe area layout guides" minToolsVersion="9.0"/> |
|||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
|||
</dependencies> |
|||
<objects> |
|||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PDFViewController" customModule="GME_Remit" customModuleProvider="target"> |
|||
<connections> |
|||
<outlet property="pdfView" destination="CRQ-0d-l3v" id="i3w-94-zHh"/> |
|||
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
|||
</connections> |
|||
</placeholder> |
|||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
|||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
|||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/> |
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
|||
<subviews> |
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CRQ-0d-l3v"> |
|||
<rect key="frame" x="10" y="10" width="394" height="842"/> |
|||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
|||
</view> |
|||
</subviews> |
|||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
|||
<constraints> |
|||
<constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="CRQ-0d-l3v" secondAttribute="trailing" constant="10" id="Ide-77-053"/> |
|||
<constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="CRQ-0d-l3v" secondAttribute="bottom" constant="10" id="Mt1-RF-CWC"/> |
|||
<constraint firstItem="CRQ-0d-l3v" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="10" id="Y5r-8D-MlU"/> |
|||
<constraint firstItem="CRQ-0d-l3v" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="10" id="cM1-Fo-AB8"/> |
|||
</constraints> |
|||
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
|||
<point key="canvasLocation" x="171" y="161"/> |
|||
</view> |
|||
</objects> |
|||
</document> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue