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