Browse Source

see all

v0.17
Dibya 1 year ago
parent
commit
6a5c0d3cd2
  1. 128
      GME Remit.xcodeproj/project.pbxproj
  2. 37
      GME Remit/Modules/AllRecipients/Application Logic/Interactor/AllRecipientsInteractor.swift
  3. 16
      GME Remit/Modules/AllRecipients/Application Logic/Interactor/AllRecipientsInteractorIO.swift
  4. 17
      GME Remit/Modules/AllRecipients/Application Logic/Service/AllRecipientsService.swift
  5. 16
      GME Remit/Modules/AllRecipients/Application Logic/Service/AllRecipientsServiceType.swift
  6. 11
      GME Remit/Modules/AllRecipients/Module Interface/AllRecipientsModuleInterface.swift
  7. 43
      GME Remit/Modules/AllRecipients/User Interface/Presenter/AllRecipientsPresenter.swift
  8. 30
      GME Remit/Modules/AllRecipients/User Interface/View/AllRecipientTableViewCell.swift
  9. 97
      GME Remit/Modules/AllRecipients/User Interface/View/AllRecipients.storyboard
  10. 80
      GME Remit/Modules/AllRecipients/User Interface/View/AllRecipientsViewController.swift
  11. 14
      GME Remit/Modules/AllRecipients/User Interface/View/AllRecipientsViewInterface.swift
  12. 44
      GME Remit/Modules/AllRecipients/User Interface/Wireframe/AllRecipientsWireframe.swift
  13. 13
      GME Remit/Modules/AllRecipients/User Interface/Wireframe/AllRecipientsWireframeInput.swift
  14. 12
      GME Remit/Modules/Home/User Interface/View/Home.storyboard
  15. 3
      GME Remit/Modules/RecipientModules/Recipients/User Interface/View/Recipients.storyboard
  16. 8
      GME Remit/Modules/RecipientModules/Recipients/User Interface/View/RecipientsViewController.swift

128
GME Remit.xcodeproj/project.pbxproj

@ -814,6 +814,18 @@
D9DC108121639078008F3C51 /* MessageComposeViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DC107621639077008F3C51 /* MessageComposeViewInterface.swift */; };
D9DC108421639E56008F3C51 /* SuccessMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DC108321639E56008F3C51 /* SuccessMessage.swift */; };
D9E57945212E938D00D47AC0 /* ExchangeRateDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9E57944212E938D00D47AC0 /* ExchangeRateDetailModel.swift */; };
DD2D70262A10277E00285D8A /* AllRecipientTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD2D70252A10277E00285D8A /* AllRecipientTableViewCell.swift */; };
DDCDF6662A0ACBDB00124D00 /* AllRecipientsModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6532A0ACBDB00124D00 /* AllRecipientsModuleInterface.swift */; };
DDCDF6672A0ACBDB00124D00 /* AllRecipientsServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6562A0ACBDB00124D00 /* AllRecipientsServiceType.swift */; };
DDCDF6682A0ACBDB00124D00 /* AllRecipientsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6572A0ACBDB00124D00 /* AllRecipientsService.swift */; };
DDCDF6692A0ACBDB00124D00 /* AllRecipientsInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6592A0ACBDB00124D00 /* AllRecipientsInteractorIO.swift */; };
DDCDF66A2A0ACBDB00124D00 /* AllRecipientsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF65A2A0ACBDB00124D00 /* AllRecipientsInteractor.swift */; };
DDCDF66B2A0ACBDB00124D00 /* AllRecipientsPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF65D2A0ACBDB00124D00 /* AllRecipientsPresenter.swift */; };
DDCDF66C2A0ACBDB00124D00 /* AllRecipientsWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF65F2A0ACBDB00124D00 /* AllRecipientsWireframe.swift */; };
DDCDF66D2A0ACBDB00124D00 /* AllRecipientsWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6602A0ACBDB00124D00 /* AllRecipientsWireframeInput.swift */; };
DDCDF66E2A0ACBDB00124D00 /* AllRecipients.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDCDF6622A0ACBDB00124D00 /* AllRecipients.storyboard */; };
DDCDF66F2A0ACBDB00124D00 /* AllRecipientsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6642A0ACBDB00124D00 /* AllRecipientsViewController.swift */; };
DDCDF6702A0ACBDB00124D00 /* AllRecipientsViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCDF6652A0ACBDB00124D00 /* AllRecipientsViewInterface.swift */; };
EC2D9C212826C67600996921 /* SlipUpload.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC2D9C202826C67600996921 /* SlipUpload.storyboard */; };
EC2D9C232826C68E00996921 /* SlipUploadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2D9C222826C68E00996921 /* SlipUploadViewController.swift */; };
FF29296C212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF29296B212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift */; };
@ -1702,6 +1714,18 @@
D9DC107721639077008F3C51 /* MessageCompose.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MessageCompose.storyboard; sourceTree = "<group>"; };
D9DC108321639E56008F3C51 /* SuccessMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessMessage.swift; sourceTree = "<group>"; };
D9E57944212E938D00D47AC0 /* ExchangeRateDetailModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExchangeRateDetailModel.swift; sourceTree = "<group>"; };
DD2D70252A10277E00285D8A /* AllRecipientTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllRecipientTableViewCell.swift; sourceTree = "<group>"; };
DDCDF6532A0ACBDB00124D00 /* AllRecipientsModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsModuleInterface.swift; sourceTree = "<group>"; };
DDCDF6562A0ACBDB00124D00 /* AllRecipientsServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsServiceType.swift; sourceTree = "<group>"; };
DDCDF6572A0ACBDB00124D00 /* AllRecipientsService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsService.swift; sourceTree = "<group>"; };
DDCDF6592A0ACBDB00124D00 /* AllRecipientsInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsInteractorIO.swift; sourceTree = "<group>"; };
DDCDF65A2A0ACBDB00124D00 /* AllRecipientsInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsInteractor.swift; sourceTree = "<group>"; };
DDCDF65D2A0ACBDB00124D00 /* AllRecipientsPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsPresenter.swift; sourceTree = "<group>"; };
DDCDF65F2A0ACBDB00124D00 /* AllRecipientsWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsWireframe.swift; sourceTree = "<group>"; };
DDCDF6602A0ACBDB00124D00 /* AllRecipientsWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsWireframeInput.swift; sourceTree = "<group>"; };
DDCDF6622A0ACBDB00124D00 /* AllRecipients.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = AllRecipients.storyboard; sourceTree = "<group>"; };
DDCDF6642A0ACBDB00124D00 /* AllRecipientsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsViewController.swift; sourceTree = "<group>"; };
DDCDF6652A0ACBDB00124D00 /* AllRecipientsViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllRecipientsViewInterface.swift; sourceTree = "<group>"; };
EC2D9C202826C67600996921 /* SlipUpload.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SlipUpload.storyboard; sourceTree = "<group>"; };
EC2D9C222826C68E00996921 /* SlipUploadViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlipUploadViewController.swift; sourceTree = "<group>"; };
F1101393B519381AC79DA0A9 /* Pods-GMERemittanceUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMERemittanceUITests.debug.xcconfig"; path = "Target Support Files/Pods-GMERemittanceUITests/Pods-GMERemittanceUITests.debug.xcconfig"; sourceTree = "<group>"; };
@ -6006,6 +6030,7 @@
D907AB96212AA8A300915A87 /* Modules */ = {
isa = PBXGroup;
children = (
DDCDF6512A0ACBDB00124D00 /* AllRecipients */,
41F06F9D29B712A2008E9E5D /* TransferList */,
241796B729B3810C005D8219 /* Loyality Points */,
28AB137E28E552C200191695 /* NotificationDetail */,
@ -6959,6 +6984,97 @@
path = ViewModels;
sourceTree = "<group>";
};
DDCDF6512A0ACBDB00124D00 /* AllRecipients */ = {
isa = PBXGroup;
children = (
DDCDF6522A0ACBDB00124D00 /* Module Interface */,
DDCDF6542A0ACBDB00124D00 /* Application Logic */,
DDCDF65B2A0ACBDB00124D00 /* User Interface */,
);
path = AllRecipients;
sourceTree = "<group>";
};
DDCDF6522A0ACBDB00124D00 /* Module Interface */ = {
isa = PBXGroup;
children = (
DDCDF6532A0ACBDB00124D00 /* AllRecipientsModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
DDCDF6542A0ACBDB00124D00 /* Application Logic */ = {
isa = PBXGroup;
children = (
DDCDF6552A0ACBDB00124D00 /* Service */,
DDCDF6582A0ACBDB00124D00 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
DDCDF6552A0ACBDB00124D00 /* Service */ = {
isa = PBXGroup;
children = (
DDCDF6562A0ACBDB00124D00 /* AllRecipientsServiceType.swift */,
DDCDF6572A0ACBDB00124D00 /* AllRecipientsService.swift */,
);
path = Service;
sourceTree = "<group>";
};
DDCDF6582A0ACBDB00124D00 /* Interactor */ = {
isa = PBXGroup;
children = (
DDCDF6592A0ACBDB00124D00 /* AllRecipientsInteractorIO.swift */,
DDCDF65A2A0ACBDB00124D00 /* AllRecipientsInteractor.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
DDCDF65B2A0ACBDB00124D00 /* User Interface */ = {
isa = PBXGroup;
children = (
DDCDF65C2A0ACBDB00124D00 /* Presenter */,
DDCDF65E2A0ACBDB00124D00 /* Wireframe */,
DDCDF6612A0ACBDB00124D00 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
DDCDF65C2A0ACBDB00124D00 /* Presenter */ = {
isa = PBXGroup;
children = (
DDCDF65D2A0ACBDB00124D00 /* AllRecipientsPresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
DDCDF65E2A0ACBDB00124D00 /* Wireframe */ = {
isa = PBXGroup;
children = (
DDCDF65F2A0ACBDB00124D00 /* AllRecipientsWireframe.swift */,
DDCDF6602A0ACBDB00124D00 /* AllRecipientsWireframeInput.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
DDCDF6612A0ACBDB00124D00 /* View */ = {
isa = PBXGroup;
children = (
DDCDF6622A0ACBDB00124D00 /* AllRecipients.storyboard */,
DDCDF6632A0ACBDB00124D00 /* ViewModels */,
DDCDF6642A0ACBDB00124D00 /* AllRecipientsViewController.swift */,
DDCDF6652A0ACBDB00124D00 /* AllRecipientsViewInterface.swift */,
DD2D70252A10277E00285D8A /* AllRecipientTableViewCell.swift */,
);
path = View;
sourceTree = "<group>";
};
DDCDF6632A0ACBDB00124D00 /* ViewModels */ = {
isa = PBXGroup;
children = (
);
path = ViewModels;
sourceTree = "<group>";
};
DFC92C5596F51F3BEC755F15 /* Pods */ = {
isa = PBXGroup;
children = (
@ -7324,6 +7440,7 @@
73AEFF7A2334A13100A967FB /* TransactionHistoryGroup.storyboard in Resources */,
404654BA24E6666F000E5BFB /* PINKeyboardView.xib in Resources */,
89739E3424459A630016251B /* SendMoneyParent.storyboard in Resources */,
DDCDF66E2A0ACBDB00124D00 /* AllRecipients.storyboard in Resources */,
2454866A29BA2AE60065E1DD /* volte-bolditalic.otf in Resources */,
2454866C29BA2AE60065E1DD /* volte-semibolditalic.otf in Resources */,
5565FF271FE275E5002934E9 /* README.md in Resources */,
@ -7856,6 +7973,7 @@
D92B80262140C3CB00A25B26 /* MainService.swift in Sources */,
40B9B0A424EC4ED1002C258C /* ExistingUserKycInteractorIO.swift in Sources */,
89739E2C24459A630016251B /* SendMoneyParentService.swift in Sources */,
DDCDF66F2A0ACBDB00124D00 /* AllRecipientsViewController.swift in Sources */,
28AB139928E552C200191695 /* NotificationDetailWireframeInput.swift in Sources */,
D9B414422161AE2800A53D9D /* DatePickerViewController.swift in Sources */,
89EA0D77243EC1C5003ACCC8 /* PersonalInformationServiceType.swift in Sources */,
@ -7920,6 +8038,7 @@
7EDBFC0724B3031B00AD5D4D /* WithdrawFromWalletViewController.swift in Sources */,
73149F6322E5AF8000D66B26 /* LauncherScreenModuleInterface.swift in Sources */,
281EF60828ACCC4D0092E5E6 /* HowToDepositViewInterface.swift in Sources */,
DDCDF66C2A0ACBDB00124D00 /* AllRecipientsWireframe.swift in Sources */,
89739E5D24459A630016251B /* SendMoneyVerificationInteractorIO.swift in Sources */,
89EA0D86243EC1C5003ACCC8 /* ChangePersonalInformationInteractorIO.swift in Sources */,
736A8C442277EB2A00337A50 /* BiometricNotificationInteractorIO.swift in Sources */,
@ -8111,6 +8230,7 @@
73210DA822FBE73100715D6C /* RecipientsWireframeInputOutput.swift in Sources */,
89739E6124459A630016251B /* SendMoneyVerificationWireframeInput.swift in Sources */,
40B9B0A524EC4ED1002C258C /* ExistingUserKycPresenter.swift in Sources */,
DDCDF66B2A0ACBDB00124D00 /* AllRecipientsPresenter.swift in Sources */,
89739E5B24459A630016251B /* SendMoneyVerificationServiceType.swift in Sources */,
241796CC29B3810C005D8219 /* LoyalityPointsServiceType.swift in Sources */,
73185350230EACA400BA9AE3 /* SendMoneyCountryViewModel.swift in Sources */,
@ -8157,6 +8277,7 @@
73AEFF702334A13100A967FB /* TransactionHistoryGroupModuleInterface.swift in Sources */,
4060B97624DBBA0300E90F8C /* KYCVerifyStep1Presenter.swift in Sources */,
D9B7ADFA2130048E009B0564 /* ExchangeRatesViewInterface.swift in Sources */,
DDCDF6662A0ACBDB00124D00 /* AllRecipientsModuleInterface.swift in Sources */,
40B33AA824CAF87A00AFE2AB /* ExistingUserRegistrationPresenter.swift in Sources */,
D9E57945212E938D00D47AC0 /* ExchangeRateDetailModel.swift in Sources */,
5EC4637628AA2611006B5FDC /* NotificationListModuleInterface.swift in Sources */,
@ -8201,6 +8322,7 @@
7EDBFC2524B3098E00AD5D4D /* WithdrawFromWalletDetailService.swift in Sources */,
7354AB20270D3217004EBA7D /* TermsAndConditionModuleInterface.swift in Sources */,
943D961228B21962000F9E9B /* TabbedView.swift in Sources */,
DD2D70262A10277E00285D8A /* AllRecipientTableViewCell.swift in Sources */,
5EC4637D28AA2611006B5FDC /* NotificationListWireframe.swift in Sources */,
9488313928B2A9E600D22A15 /* ReferralModel.swift in Sources */,
40B9B0A324EC4ED1002C258C /* ExistingUserKycInteractor.swift in Sources */,
@ -8252,6 +8374,7 @@
736E321A230A3CC1005799AA /* UIDevice+Ext.swift in Sources */,
738714B5237CE86E0038FCB1 /* InboundReceiptInteractor.swift in Sources */,
89739E2F24459A630016251B /* SendMoneyParentPresenter.swift in Sources */,
DDCDF6702A0ACBDB00124D00 /* AllRecipientsViewInterface.swift in Sources */,
D946719821426DFB003924DB /* LoginInteractor.swift in Sources */,
04546C4120329A36007EFE15 /* AboutGMEViewController.swift in Sources */,
405718D224D932AE0022CDDE /* NewUserRegisterViewController.swift in Sources */,
@ -8294,6 +8417,7 @@
89739E3F24459A630016251B /* SendMoneyReceiptViewController.swift in Sources */,
D96A4FBC2146079600CFD507 /* AppConstants.swift in Sources */,
FF6E7D9321BF951D00A003B9 /* AppUpdatePresenter.swift in Sources */,
DDCDF6682A0ACBDB00124D00 /* AllRecipientsService.swift in Sources */,
40B33AAB24CAF87A00AFE2AB /* ExistingUserRegistrationViewController.swift in Sources */,
FF6E7D9221BF951D00A003B9 /* AppUpdateModuleInterface.swift in Sources */,
89739E2B24459A630016251B /* SendMoneyParentServiceType.swift in Sources */,
@ -8367,6 +8491,7 @@
89739E3B24459A630016251B /* SendMoneyReceiptPresenter.swift in Sources */,
73341C90238F4FE900394676 /* UILabel+Ext.swift in Sources */,
D9AFE856215C7166005F3A25 /* HomeCollectionTableViewCell.swift in Sources */,
DDCDF66D2A0ACBDB00124D00 /* AllRecipientsWireframeInput.swift in Sources */,
BEC9AFFC224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift in Sources */,
735F68DD2394A76800A2DBC8 /* NewRegisterInteractorIO.swift in Sources */,
D97785A3215DC55F00754079 /* TransactionHistoryWireframeInput.swift in Sources */,
@ -8466,6 +8591,7 @@
892F9E8B243DB0F300D9D88C /* ShowAPIWireframe.swift in Sources */,
281EF60128ACCC4D0092E5E6 /* HowToDepositService.swift in Sources */,
D94173B3214B40ED00D04BE5 /* KycModel.swift in Sources */,
DDCDF66A2A0ACBDB00124D00 /* AllRecipientsInteractor.swift in Sources */,
D95B7047213FB5F10053CC3D /* WebLinksViewController.swift in Sources */,
738714BB237CE86E0038FCB1 /* InboundReceiptViewController.swift in Sources */,
73168A2322F3D01A00878038 /* TablePresenterProtocol.swift in Sources */,
@ -8482,6 +8608,7 @@
73D3F3DD270C65B5006C3F97 /* CDDIViewControllerServiceType.swift in Sources */,
73210DAD22FBEA3B00715D6C /* RecipientsViewModel.swift in Sources */,
73B6D6942306439600A0CB6E /* AccountModel.swift in Sources */,
DDCDF6692A0ACBDB00124D00 /* AllRecipientsInteractorIO.swift in Sources */,
7389600B22C2F208003FEA90 /* TablePresenterServiceType.swift in Sources */,
D97D58D72240D34900EFB27E /* ResendDetail.swift in Sources */,
89739E3524459A630016251B /* SendMoneyParentViewController.swift in Sources */,
@ -8514,6 +8641,7 @@
D9030ABD2139113A00A1BCA0 /* SendMoneyAccountValidationRequestModel.swift in Sources */,
892F9E8D243DB0F300D9D88C /* ShowAPIViewController.swift in Sources */,
73195AB822FD14D500151434 /* SetupRecipientWireframe.swift in Sources */,
DDCDF6672A0ACBDB00124D00 /* AllRecipientsServiceType.swift in Sources */,
D9DC108021639078008F3C51 /* MessageComposeViewController.swift in Sources */,
7327568B23B052DB00BF66C5 /* PDFViewController.swift in Sources */,
7315526E23C839CF0011D37C /* Rx+UserDefaultsWrapper.swift in Sources */,

37
GME Remit/Modules/AllRecipients/Application Logic/Interactor/AllRecipientsInteractor.swift

@ -0,0 +1,37 @@
//
// AllRecipientsInteractor.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class AllRecipientsInteractor {
// MARK: Properties
weak var output: AllRecipientsInteractorOutput?
private let service: AllRecipientsServiceType
// MARK: Initialization
init(service: AllRecipientsServiceType) {
self.service = service
}
// MARK: Converting entities
}
// MARK: AllRecipients interactor input interface
extension AllRecipientsInteractor: AllRecipientsInteractorInput {
func makeApiRequest() {
self.service.makeApiRequest(success: { (message) in
self.output?.success(message: message ?? "")
}) { (error) in
self.output?.show(error: error)
}
}
}

16
GME Remit/Modules/AllRecipients/Application Logic/Interactor/AllRecipientsInteractorIO.swift

@ -0,0 +1,16 @@
//
// AllRecipientsInteractorIO.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol AllRecipientsInteractorInput: class {
func makeApiRequest()
}
protocol AllRecipientsInteractorOutput: class {
func show(error: Error)
func success(message: String)
}

17
GME Remit/Modules/AllRecipients/Application Logic/Service/AllRecipientsService.swift

@ -0,0 +1,17 @@
//
// AllRecipientsService.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class AllRecipientsService: AllRecipientsServiceType {
func makeApiRequest(
success: @escaping (String?) -> Void,
failure: @escaping (Error) -> Void
){
}
}

16
GME Remit/Modules/AllRecipients/Application Logic/Service/AllRecipientsServiceType.swift

@ -0,0 +1,16 @@
//
// AllRecipientsServiceType.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol AllRecipientsServiceType: class, ApiServiceType {
func makeApiRequest(
success: @escaping (String?) -> Void,
failure: @escaping (Error) -> Void
)
}

11
GME Remit/Modules/AllRecipients/Module Interface/AllRecipientsModuleInterface.swift

@ -0,0 +1,11 @@
//
// AllRecipientsModuleInterface.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol AllRecipientsModuleInterface: class {
func makeApiRequest()
}

43
GME Remit/Modules/AllRecipients/User Interface/Presenter/AllRecipientsPresenter.swift

@ -0,0 +1,43 @@
//
// AllRecipientsPresenter.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class AllRecipientsPresenter {
// MARK: Properties
weak var view: AllRecipientsViewInterface?
var interactor: AllRecipientsInteractorInput?
var wireframe: AllRecipientsWireframeInput?
// MARK: Converting entities
}
// MARK: AllRecipients module interface
extension AllRecipientsPresenter: AllRecipientsModuleInterface {
func makeApiRequest(){
self.view?.showLoading()
self.interactor?.makeApiRequest()
}
}
// MARK: AllRecipients interactor output interface
extension AllRecipientsPresenter: AllRecipientsInteractorOutput {
func show(error: Error) {
self.view?.hideLoading()
self.view?.show(error: error.localizedDescription)
}
func success(message: String) {
self.view?.hideLoading()
self.view?.show(message: message)
}
}

30
GME Remit/Modules/AllRecipients/User Interface/View/AllRecipientTableViewCell.swift

@ -0,0 +1,30 @@
//
import UIKit
class AllRecipientTableViewCell: UITableViewCell {
@IBOutlet weak var logoLabel: UILabel! {
didSet {
self.logoLabel.clipsToBounds = true
self.logoLabel.layer.cornerRadius = self.logoLabel.frame.width/2
}
}
@IBOutlet weak var usernameLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func setUp(model: Recipient?) {
self.usernameLabel.text = model?.fullName ?? ""
}
}

97
GME Remit/Modules/AllRecipients/User Interface/View/AllRecipients.storyboard

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="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="21678"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--AllRecipients-->
<scene sceneID="R60-Pu-Hpy">
<objects>
<viewController storyboardIdentifier="AllRecipientsViewController" title="AllRecipients" id="HSb-ou-7T5" customClass="AllRecipientsViewController" customModule="JME_Remit" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y1H-iV-BwG"/>
<viewControllerLayoutGuide type="bottom" id="PYB-Kq-ghm"/>
</layoutGuides>
<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>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="mxF-LV-o9l">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="seeAll" rowHeight="82" id="EI1-cW-d8A" customClass="AllRecipientTableViewCell" customModule="JME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="50" width="375" height="82"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="EI1-cW-d8A" id="n8x-Nv-thO">
<rect key="frame" x="0.0" y="0.0" width="375" height="82"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SM" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SPa-EW-HdM">
<rect key="frame" x="16" y="11" width="60" height="60"/>
<color key="backgroundColor" red="0.1803921568627451" green="0.53725490196078429" blue="1" alpha="0.23999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="60" id="UNc-Nx-g35"/>
<constraint firstAttribute="width" constant="60" id="euY-DH-xnk"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.1803921568627451" green="0.53725490196078429" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LKq-8f-mJ8">
<rect key="frame" x="96" y="11" width="263" height="60"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="LKq-8f-mJ8" firstAttribute="trailing" secondItem="n8x-Nv-thO" secondAttribute="trailingMargin" id="02C-wZ-lko"/>
<constraint firstItem="LKq-8f-mJ8" firstAttribute="leading" secondItem="SPa-EW-HdM" secondAttribute="trailing" constant="20" id="3cy-aR-jMU"/>
<constraint firstAttribute="bottomMargin" secondItem="LKq-8f-mJ8" secondAttribute="bottom" id="MfN-cq-pRY"/>
<constraint firstItem="SPa-EW-HdM" firstAttribute="top" secondItem="n8x-Nv-thO" secondAttribute="topMargin" id="QAn-Fa-1q4"/>
<constraint firstItem="SPa-EW-HdM" firstAttribute="bottom" secondItem="n8x-Nv-thO" secondAttribute="bottomMargin" id="Y6g-rT-Rdh"/>
<constraint firstItem="SPa-EW-HdM" firstAttribute="leading" secondItem="n8x-Nv-thO" secondAttribute="leadingMargin" id="ghp-gc-KpK"/>
<constraint firstItem="LKq-8f-mJ8" firstAttribute="top" secondItem="n8x-Nv-thO" secondAttribute="topMargin" id="m9s-DS-IdH"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="logoLabel" destination="SPa-EW-HdM" id="2c7-Uo-tXy"/>
<outlet property="usernameLabel" destination="LKq-8f-mJ8" id="so7-HF-lIG"/>
</connections>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="HSb-ou-7T5" id="gV5-3A-MOK"/>
<outlet property="delegate" destination="HSb-ou-7T5" id="fJF-is-fke"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="mxF-LV-o9l" secondAttribute="trailing" id="CLG-kb-bZ8"/>
<constraint firstItem="PYB-Kq-ghm" firstAttribute="top" secondItem="mxF-LV-o9l" secondAttribute="bottom" id="Llp-56-obb"/>
<constraint firstItem="mxF-LV-o9l" firstAttribute="top" secondItem="9Uc-9s-KgO" secondAttribute="top" id="ck5-LO-Lpr"/>
<constraint firstItem="mxF-LV-o9l" firstAttribute="leading" secondItem="9Uc-9s-KgO" secondAttribute="leading" id="eCW-cx-8TC"/>
</constraints>
</view>
<connections>
<outlet property="tableView" destination="mxF-LV-o9l" id="ALO-JY-dFG"/>
</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>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

80
GME Remit/Modules/AllRecipients/User Interface/View/AllRecipientsViewController.swift

@ -0,0 +1,80 @@
//
// AllRecipientsViewController.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class AllRecipientsViewController: UIViewController {
// MARK: Properties
var presenter: AllRecipientsModuleInterface?
var beneficaiaryModel: [Recipient]? {
didSet {
// self.tableView.reloadData()
}
}
// MARK: IBOutlets
@IBOutlet weak var tableView: UITableView!
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
}
// MARK: IBActions
// MARK: Other Functions
private func setup() {
self.tableView.delegate = self
self.tableView.dataSource = self
}
}
extension AllRecipientsViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.beneficaiaryModel?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "seeAll", for: indexPath) as? AllRecipientTableViewCell {
cell.setUp(model: self.beneficaiaryModel?[indexPath.row])
return cell
}
return UITableViewCell()
}
}
// MARK: AllRecipientsViewInterface
extension AllRecipientsViewController: AllRecipientsViewInterface {
func showLoading() {
self.showProgressHud()
}
func hideLoading() {
self.hideProgressHud()
}
func show(error: String) {
self.alert(type: .error, message: error)
}
func show(message: String) {
self.alertWithOk(
type: .success,
message: message,
title: "Success",
okTitle: "Ok"
) {
}
}
}

14
GME Remit/Modules/AllRecipients/User Interface/View/AllRecipientsViewInterface.swift

@ -0,0 +1,14 @@
//
// AllRecipientsViewInterface.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol AllRecipientsViewInterface: class {
func showLoading()
func hideLoading()
func show(error: String)
func show(message: String)
}

44
GME Remit/Modules/AllRecipients/User Interface/Wireframe/AllRecipientsWireframe.swift

@ -0,0 +1,44 @@
//
// AllRecipientsWireframe.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class AllRecipientsWireframe {
weak var view: UIViewController!
var beneficiaryModel: [Recipient]?
}
extension AllRecipientsWireframe: AllRecipientsWireframeInput {
var storyboardName: String {return "AllRecipients"}
func getMainView() -> UIViewController {
let service = AllRecipientsService()
let interactor = AllRecipientsInteractor(service: service)
let presenter = AllRecipientsPresenter()
let viewController = viewControllerFromStoryboard(of: AllRecipientsViewController.self)
viewController.presenter = presenter
viewController.beneficaiaryModel = self.beneficiaryModel
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
func opemRecipients(
model: [Recipient],
source: UINavigationController
) {
self.beneficiaryModel = model
self.pushMainView(in: source)
}
}

13
GME Remit/Modules/AllRecipients/User Interface/Wireframe/AllRecipientsWireframeInput.swift

@ -0,0 +1,13 @@
//
// AllRecipientsWireframeInput.swift
// GME Remit
//
// Created by IME iMac on 5/10/23.
//Copyright © 2023 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol AllRecipientsWireframeInput: WireframeInput {
}

12
GME Remit/Modules/Home/User Interface/View/Home.storyboard

@ -155,13 +155,13 @@
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MOB000110" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2D3-BA-yV3">
<rect key="frame" x="16" y="36" width="113.5" height="23.5"/>
<rect key="frame" x="16" y="36" width="113.5" height="27"/>
<fontDescription key="fontDescription" name="FONTSPRINGDEMO-VolteSemiboldRegular" family="FONTSPRING DEMO - Volte Semibold" pointSize="20"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0B9-0a-Jlt">
<rect key="frame" x="137.5" y="39.5" width="13" height="17"/>
<rect key="frame" x="137.5" y="41" width="13" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="PY1-YE-0vx"/>
<constraint firstAttribute="height" constant="17" id="a2I-Sr-5OW"/>
@ -177,19 +177,19 @@
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="JPY 10,000" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OeT-9p-3lL">
<rect key="frame" x="16" y="75.5" width="82.5" height="19"/>
<rect key="frame" x="16" y="79" width="82.5" height="19"/>
<fontDescription key="fontDescription" name="FONTSPRINGDEMO-VolteSemiboldRegular" family="FONTSPRING DEMO - Volte Semibold" pointSize="16"/>
<color key="textColor" red="0.0" green="0.80000000000000004" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available Balance" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oy6-wk-dfr">
<rect key="frame" x="16" y="98.5" width="134.5" height="20"/>
<fontDescription key="fontDescription" name="FONTSPRINGDEMO-VolteSemiboldRegular" family="FONTSPRING DEMO - Volte Semibold" pointSize="17"/>
<rect key="frame" x="16" y="102" width="110.5" height="16.5"/>
<fontDescription key="fontDescription" name="FONTSPRINGDEMO-VolteSemiboldRegular" family="FONTSPRING DEMO - Volte Semibold" pointSize="14"/>
<color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JYo-k5-OO8">
<rect key="frame" x="244" y="75.5" width="140" height="43"/>
<rect key="frame" x="244" y="79" width="140" height="39.5"/>
<color key="backgroundColor" red="0.0" green="0.80000000000000004" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="140" id="glh-UA-irf"/>

3
GME Remit/Modules/RecipientModules/Recipients/User Interface/View/Recipients.storyboard

@ -349,6 +349,9 @@
<state key="normal" title="See All">
<color key="titleColor" systemColor="systemBlueColor"/>
</state>
<connections>
<action selector="seeAllButton:" destination="hHp-2v-bDH" eventType="touchUpInside" id="gQL-7d-aEP"/>
</connections>
</button>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="h3h-DK-LWz">
<rect key="frame" x="0.0" y="37.5" width="375" height="85.5"/>

8
GME Remit/Modules/RecipientModules/Recipients/User Interface/View/RecipientsViewController.swift

@ -42,6 +42,12 @@ class RecipientsViewController: UIViewController {
// @IBOutlet private weak var noRecipientLabel: UILabel!
// @IBOutlet private var addRecipientTapGestureRecognizer: UITapGestureRecognizer!
@IBAction func seeAllButton(_ sender: UIButton) {
if let model = self.model, let navigation = self.navigationController {
AllRecipientsWireframe().opemRecipients(model: model, source: navigation)
}
}
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
@ -90,7 +96,7 @@ class RecipientsViewController: UIViewController {
extension RecipientsViewController {
func configureLanguage() {
// self.newRecipeintLabel.text = "new_recipient".localized()
self.searchBar.placeholder = "search_text".localized()
self.searchBar.placeholder = "Search your transfers"
}
private func setup() {

Loading…
Cancel
Save