Toggle navigation
Toggle navigation
This project
Loading...
Sign in
open-source
/
warply_sdk_framework
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Authored by
Vasilis
2022-04-27 14:50:48 +0300
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
661939603d74bbda872dd5beeab700ef8f0da82c
66193960
2 parents
65d70db2
a3a5baf0
Merge branch 'master' of
https://git.warp.ly/open-source/warply_sdk_framework
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
459 additions
and
25 deletions
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS.xcodeproj/project.pbxproj
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS.xcworkspace/xcuserdata/manos.xcuserdatad/UserInterfaceState.xcuserstate
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/CouponBarcodeView.swift
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/CouponBarcodeViewInterface.swift
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/CouponView.swift
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/GiftsView.swift
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/MyApi.h
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/MyApi.m
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS.xcodeproj/project.pbxproj
View file @
6619396
...
...
@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
1E7086652811A93F00704CA8 /* CouponBarcodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E7086642811A93F00704CA8 /* CouponBarcodeView.swift */; };
1E7086672811A96E00704CA8 /* CouponBarcodeViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E7086662811A96E00704CA8 /* CouponBarcodeViewInterface.swift */; };
1E735FF2281067320050A298 /* CampaignWebview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E735FF1281067320050A298 /* CampaignWebview.swift */; };
1E735FF42810681E0050A298 /* CampaignWebviewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E735FF32810681E0050A298 /* CampaignWebviewInterface.swift */; };
1EBEB02D280D69D800BF802C /* GiftsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EBEB02C280D69D800BF802C /* GiftsView.swift */; };
...
...
@@ -141,6 +143,8 @@
/* Begin PBXFileReference section */
1353B8C484CC0649CAC2EB74 /* Pods_WarplySDKFrameworkIOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WarplySDKFrameworkIOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1E7086642811A93F00704CA8 /* CouponBarcodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponBarcodeView.swift; sourceTree = "<group>"; };
1E7086662811A96E00704CA8 /* CouponBarcodeViewInterface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponBarcodeViewInterface.swift; sourceTree = "<group>"; };
1E735FF1281067320050A298 /* CampaignWebview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CampaignWebview.swift; sourceTree = "<group>"; };
1E735FF32810681E0050A298 /* CampaignWebviewInterface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CampaignWebviewInterface.swift; sourceTree = "<group>"; };
1EBEB02C280D69D800BF802C /* GiftsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GiftsView.swift; sourceTree = "<group>"; };
...
...
@@ -345,6 +349,8 @@
E67D1EB9281055F800940F01 /* MoreForYouViewInterface.swift */,
E67D1EBF2810579F00940F01 /* MoreForYouView.swift */,
E67D1EC128113EED00940F01 /* CouponView.swift */,
1E7086642811A93F00704CA8 /* CouponBarcodeView.swift */,
1E7086662811A96E00704CA8 /* CouponBarcodeViewInterface.swift */,
E67D1EC328113EFD00940F01 /* CouponViewInterface.swift */,
E6D8DF5E27A9429E0006A3A9 /* MyApi.h */,
E6D8DF5C27A9429E0006A3A9 /* MyApi.m */,
...
...
@@ -746,6 +752,7 @@
E6D8DF2E27A942920006A3A9 /* UIRefreshControl+AFNetworking.m in Sources */,
E6D8DF4827A942920006A3A9 /* AFURLRequestSerialization.m in Sources */,
E67D1EC228113EED00940F01 /* CouponView.swift in Sources */,
1E7086672811A96E00704CA8 /* CouponBarcodeViewInterface.swift in Sources */,
E6D8DEF327A942920006A3A9 /* WLNativeVideoTableViewCell.m in Sources */,
E6D8DF2527A942920006A3A9 /* WLSMSActionHanlder.m in Sources */,
E67D1EBE2810573900940F01 /* WalletView.swift in Sources */,
...
...
@@ -790,6 +797,7 @@
E67D1EC828119ED300940F01 /* swiftApi.swift in Sources */,
E6D8DF5227A942920006A3A9 /* FMDatabase.m in Sources */,
E6D8DF1227A942920006A3A9 /* WLPushManager.m in Sources */,
1E7086652811A93F00704CA8 /* CouponBarcodeView.swift in Sources */,
E6D8DEF827A942920006A3A9 /* WLNativeAdTableViewCell.m in Sources */,
E6D8DE6D27A942010006A3A9 /* WarplySDKFrameworkIOS.docc in Sources */,
E6D8DF4427A942920006A3A9 /* AFURLResponseSerialization.m in Sources */,
...
...
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS.xcworkspace/xcuserdata/manos.xcuserdatad/UserInterfaceState.xcuserstate
View file @
6619396
No preview for this file type
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/CouponBarcodeView.swift
0 → 100644
View file @
6619396
//
// CouponBarcodeView.swift
// WarplySDKFrameworkIOS
//
// Created by Manos Chorianopoulos on 21/4/22.
//
#if canImport(SwiftUI)
import
SwiftUI
import
Combine
import
Foundation
import
UIKit
//import RSBarcodes_Swift
//import AVFoundation
extension
CouponBarcodeView
{
struct
headerView
:
View
{
var
goBack
:
()
->
()
var
uiscreen
=
UIScreen
.
main
.
bounds
var
body
:
some
View
{
HStack
(
alignment
:
.
center
)
{
Button
{
// Button Action
goBack
()
}
label
:
{
Image
(
"ic_back"
,
bundle
:
Bundle
(
for
:
MyEmptyClass
.
self
))
.
resizable
()
.
aspectRatio
(
contentMode
:
.
fit
)
.
frame
(
width
:
self
.
uiscreen
.
height
*
0.025
,
height
:
self
.
uiscreen
.
height
*
0.02
)
}
Text
(
"Εκπτωτικό κουπόνι"
)
.
fontWeight
(
.
medium
)
.
font
(
.
system
(
size
:
16
))
.
foregroundColor
(
Color
(
red
:
0.20784313725490197
,
green
:
0.3176470588235294
,
blue
:
0.40784313725490196
))
.
multilineTextAlignment
(
.
center
)
.
frame
(
maxWidth
:
.
infinity
)
.
padding
(
.
horizontal
)
}
.
frame
(
maxWidth
:
.
infinity
)
.
padding
(
.
horizontal
)
.
padding
(
.
vertical
,
10
)
}
}
struct
couponContainer
:
View
{
@State
var
coupon
:
Dictionary
<
String
,
Any
>
// @State var couponset:CouponSetItemModel
var
uiscreen
=
UIScreen
.
main
.
bounds
static
func
convertDateFormat
(
inputDate
:
String
)
->
String
{
let
dateFormatter
=
DateFormatter
()
dateFormatter
.
dateFormat
=
"yyyy-MM-dd hh:mm"
if
let
date
=
dateFormatter
.
date
(
from
:
inputDate
)
{
dateFormatter
.
dateFormat
=
"dd/MM/yyyy"
let
resultString
=
dateFormatter
.
string
(
from
:
date
)
return
resultString
}
else
{
return
""
}
}
func
generateBarcode
(
from
string
:
String
)
->
Image
?
{
let
data
=
string
.
data
(
using
:
String
.
Encoding
.
ascii
)
if
let
filter
=
CIFilter
(
name
:
"CICode128BarcodeGenerator"
)
{
filter
.
setValue
(
data
,
forKey
:
"inputMessage"
)
// let transform = CGAffineTransform(scaleX: 3, y: 3)
// if let output = filter.outputImage?.transformed(by: transform) {
if
let
output
=
filter
.
outputImage
{
// // Change the color using CIFilter
// let colorParameters = [
// "inputColor0": CIColor(color: UIColor.black), // Foreground
// "inputColor1": CIColor(color: UIColor.clear) // Background
// ]
// let colored = output.applyingFilter("CIFalseColor", parameters: colorParameters)
let
image
=
Image
(
uiImage
:
UIImage
(
ciImage
:
output
))
// return UIImage(ciImage: output)
return
image
}
}
return
nil
}
var
body
:
some
View
{
GeometryReader
{
geometry
in
ScrollView
(
showsIndicators
:
false
)
{
VStack
(
alignment
:
.
leading
)
{
ImageView
(
withURL
:
coupon
[
"img_preview"
]
as?
String
??
""
)
VStack
(
alignment
:
.
leading
)
{
Text
(
coupon
[
"name"
]
as?
String
??
""
)
.
fontWeight
(
.
bold
)
.
font
(
.
system
(
size
:
16
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
multilineTextAlignment
(
.
leading
)
.
padding
(
.
horizontal
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.04
)
Text
(
coupon
[
"short_description"
]
as?
String
??
""
)
.
fontWeight
(
.
regular
)
.
font
(
.
system
(
size
:
14
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
multilineTextAlignment
(
.
leading
)
.
padding
(
.
horizontal
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.02
)
Text
(
"Κωδικός Κουπονιού"
)
.
fontWeight
(
.
medium
)
.
font
(
.
system
(
size
:
16
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
multilineTextAlignment
(
.
center
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.05
)
.
padding
(
.
horizontal
)
.
frame
(
maxWidth
:
.
infinity
)
VStack
(
alignment
:
.
center
)
{
VStack
{
Text
(
"1A2C378"
)
.
fontWeight
(
.
bold
)
.
font
(
.
system
(
size
:
27
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
multilineTextAlignment
(
.
center
)
.
padding
(
.
horizontal
)
.
padding
(
.
vertical
,
10
)
// .padding(.all)
}
.
frame
(
width
:
self
.
uiscreen
.
width
*
0.8
)
.
background
(
Color
(
red
:
0.9333333333333333
,
green
:
0.9686274509803922
,
blue
:
1.0
))
.
cornerRadius
(
10
)
}
.
frame
(
maxWidth
:
.
infinity
)
if
(
CharacterSet
.
decimalDigits
.
isSuperset
(
of
:
CharacterSet
(
charactersIn
:
"123456789101112"
)))
{
VStack
(
alignment
:
.
center
)
{
VStack
{}
.
frame
(
height
:
1
)
.
frame
(
width
:
self
.
uiscreen
.
width
*
0.9
)
.
background
(
Color
(
red
:
0.9019607843137255
,
green
:
0.9019607843137255
,
blue
:
0.9019607843137255
))
}
.
frame
(
maxWidth
:
.
infinity
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.015
)
// TODO: Add the barcode
// generateBarcode(from: "1234567891234")
// ?
// .resizable()
// .aspectRatio(contentMode: .fit)
// .frame(width: self.uiscreen.width, height: self.uiscreen.height * 0.1)
Text
(
"123456789101112"
)
.
fontWeight
(
.
regular
)
.
font
(
.
system
(
size
:
22
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
multilineTextAlignment
(
.
center
)
.
padding
(
.
vertical
,
self
.
uiscreen
.
height
*
0.01
)
.
padding
(
.
horizontal
)
.
frame
(
maxWidth
:
.
infinity
)
VStack
(
alignment
:
.
center
)
{
VStack
{}
.
frame
(
height
:
1
)
.
frame
(
width
:
self
.
uiscreen
.
width
*
0.9
)
.
background
(
Color
(
red
:
0.9019607843137255
,
green
:
0.9019607843137255
,
blue
:
0.9019607843137255
))
}
.
frame
(
maxWidth
:
.
infinity
)
}
Text
(
"Το κουπόνι ισχύει έως "
+
CouponBarcodeView
.
couponContainer
.
convertDateFormat
(
inputDate
:
coupon
[
"expiration"
]
as?
String
??
""
))
.
fontWeight
(
.
medium
)
.
font
(
.
system
(
size
:
14
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
multilineTextAlignment
(
.
center
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.03
)
.
padding
(
.
horizontal
)
.
frame
(
maxWidth
:
.
infinity
)
}
.
frame
(
width
:
self
.
uiscreen
.
width
)
Spacer
()
VStack
(
alignment
:
.
center
)
{
Button
{
// Button Action
print
(
"Send Gift Button tapped!"
)
}
label
:
{
HStack
{
Text
(
"Κάντο δώρο!"
)
.
fontWeight
(
.
medium
)
.
font
(
.
system
(
size
:
16
))
.
foregroundColor
(
Color
(
red
:
0.3137254901960784
,
green
:
0.6196078431372549
,
blue
:
0.1843137254901961
))
.
multilineTextAlignment
(
.
center
)
.
padding
(
.
all
)
// TODO: Add gift icon
}
.
frame
(
maxWidth
:
.
infinity
)
}
.
frame
(
width
:
self
.
uiscreen
.
width
*
0.8
)
.
background
(
Color
(
red
:
0.9019607843137255
,
green
:
0.9019607843137255
,
blue
:
0.9019607843137255
))
.
cornerRadius
(
7
)
}
.
frame
(
maxWidth
:
.
infinity
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.05
)
// VStack(alignment: .center) {
// Button {
// // Button Action
// print("Shops Map Button tapped!")
// } label: {
// HStack {
// Text("Χάρτης Καταστημάτων")
// .fontWeight(.medium)
// .font(.system(size: 16))
// .foregroundColor(Color.white)
// .multilineTextAlignment(.center)
// .padding(.all)
// }
// .frame(maxWidth: .infinity)
// }
// .frame(width: self.uiscreen.width * 0.8)
// .background(Color(red: 0.4745098039215686, green: 0.7490196078431373, blue: 0.0784313725490196))
// .cornerRadius(7)
// }
// .frame(maxWidth: .infinity)
// .padding(.top, self.uiscreen.height * 0.015)
Button
{
// Button Action
print
(
"Terms Button tapped!"
)
}
label
:
{
Text
(
"Όροι χρήσης"
)
.
fontWeight
(
.
medium
)
.
font
(
.
system
(
size
:
14
))
.
foregroundColor
(
Color
(
red
:
0.2549019607843137
,
green
:
0.3333333333333333
,
blue
:
0.39215686274509803
))
.
underline
()
.
multilineTextAlignment
(
.
center
)
.
padding
(
.
top
,
self
.
uiscreen
.
height
*
0.025
)
.
padding
(
.
bottom
,
self
.
uiscreen
.
height
*
0.03
)
.
padding
(
.
horizontal
)
.
frame
(
maxWidth
:
.
infinity
)
}
.
frame
(
maxWidth
:
.
infinity
)
}
.
frame
(
width
:
self
.
uiscreen
.
width
)
.
frame
(
minHeight
:
geometry
.
size
.
height
)
.
padding
(
.
bottom
,
self
.
uiscreen
.
height
*
0.03
)
}
.
frame
(
width
:
self
.
uiscreen
.
width
)
.
frame
(
maxHeight
:
.
infinity
)
}
.
frame
(
width
:
self
.
uiscreen
.
width
)
.
frame
(
maxHeight
:
.
infinity
)
}
}
struct
ImageView
:
View
{
@ObservedObject
var
imageLoader
:
UrlImageModel
var
uiscreen
=
UIScreen
.
main
.
bounds
init
(
withURL
url
:
String
)
{
imageLoader
=
UrlImageModel
(
urlString
:
url
)
}
var
body
:
some
View
{
Image
(
uiImage
:
imageLoader
.
image
??
UIImage
())
.
resizable
()
.
aspectRatio
(
contentMode
:
.
fill
)
.
frame
(
width
:
self
.
uiscreen
.
width
,
height
:
self
.
uiscreen
.
height
*
0.25
)
}
}
}
@available(iOS 13.0.0, *)
struct
CouponBarcodeView
:
View
{
var
parentView
:
UIView
var
coupon
:
Dictionary
<
String
,
Any
>
@State
var
couponset
:
CouponSetItemModel
?
var
uiscreen
=
UIScreen
.
main
.
bounds
func
goBack
()
{
for
subview
in
parentView
.
subviews
{
if
(
subview
.
tag
==
7
)
{
subview
.
removeFromSuperview
()
}
}
}
var
body
:
some
View
{
VStack
{
headerView
(
goBack
:
goBack
)
VStack
{
couponContainer
(
coupon
:
coupon
)
}
.
background
(
Color
.
white
)
.
cornerRadius
(
30
,
corners
:
[
.
topLeft
])
.
frame
(
width
:
self
.
uiscreen
.
width
)
.
frame
(
maxHeight
:
.
infinity
)
}
.
edgesIgnoringSafeArea
([
.
bottom
])
.
frame
(
width
:
self
.
uiscreen
.
width
)
.
frame
(
maxHeight
:
.
infinity
)
// .onAppear {
// // If you want to setup data with model
// couponset = CouponSetItemModel(dictionary: coupon)
//
// }
}
}
#endif
//struct CouponBarcodeView_Previews: PreviewProvider {
// static var previews: some View {
// CouponBarcodeView()
// }
//}
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/CouponBarcodeViewInterface.swift
0 → 100644
View file @
6619396
//
// CouponBarcodeViewInterface.swift
// WarplySDKFrameworkIOS
//
// Created by Manos Chorianopoulos on 21/4/22.
//
import
Foundation
import
SwiftUI
@available(iOS 13.0.0, *)
@objc
public
class
CouponBarcodeViewInterface
:
NSObject
{
@objc(couponBarcodeViewController::)
static
public
func
couponBarcodeViewController
(
parentView
:
UIView
?,
coupon
:
Dictionary
<
String
,
Any
>
)
->
UIViewController
{
return
UIHostingController
(
rootView
:
CouponBarcodeView
(
parentView
:
parentView
!
,
coupon
:
coupon
))
}
}
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/CouponView.swift
View file @
6619396
...
...
@@ -130,24 +130,20 @@ extension CouponView {
}
struct
ImageView
:
View
{
@ObservedObject
var
imageLoader
:
ImageLoaderGifts
@State
var
image
:
UIImage
=
UIImage
()
@ObservedObject
var
imageLoader
:
UrlImageModel
var
uiscreen
=
UIScreen
.
main
.
bounds
init
(
withURL
url
:
String
)
{
imageLoader
=
ImageLoaderGifts
(
urlString
:
url
)
imageLoader
=
UrlImageModel
(
urlString
:
url
)
}
var
body
:
some
View
{
Image
(
uiImage
:
image
)
Image
(
uiImage
:
image
Loader
.
image
??
UIImage
()
)
.
resizable
()
.
aspectRatio
(
contentMode
:
.
fill
)
.
frame
(
width
:
self
.
uiscreen
.
width
,
height
:
self
.
uiscreen
.
height
*
0.25
)
.
onReceive
(
imageLoader
.
didChange
)
{
data
in
self
.
image
=
UIImage
(
data
:
data
)
??
UIImage
()
}
}
}
...
...
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/GiftsView.swift
View file @
6619396
...
...
@@ -179,24 +179,88 @@ struct RoundedCorner: Shape {
}
}
class
ImageLoaderGifts
:
ObservableObject
{
var
didChange
=
PassthroughSubject
<
Data
,
Never
>
()
var
data
=
Data
()
{
didSet
{
didChange
.
send
(
data
)
class
UrlImageModel
:
ObservableObject
{
@Published
var
image
:
UIImage
?
var
urlString
:
String
?
var
imageCache
=
ImageCache
.
getImageCache
()
func
loadImage
()
{
if
loadImageFromCache
()
{
print
(
"Cache hit"
)
return
}
print
(
"Cache miss, loading from url"
)
loadImageFromUrl
()
}
init
(
urlString
:
String
)
{
guard
let
url
=
URL
(
string
:
urlString
)
else
{
return
}
let
task
=
URLSession
.
shared
.
dataTask
(
with
:
url
)
{
data
,
response
,
error
in
guard
let
data
=
data
else
{
return
}
DispatchQueue
.
main
.
async
{
self
.
data
=
data
func
loadImageFromCache
()
->
Bool
{
guard
let
urlString
=
urlString
else
{
return
false
}
guard
let
cacheImage
=
imageCache
.
get
(
forKey
:
urlString
)
else
{
return
false
}
image
=
cacheImage
return
true
}
func
loadImageFromUrl
()
{
guard
let
urlString
=
urlString
else
{
return
}
let
url
=
URL
(
string
:
urlString
)
!
let
task
=
URLSession
.
shared
.
dataTask
(
with
:
url
,
completionHandler
:
getImageFromResponse
(
data
:
response
:
error
:))
task
.
resume
()
}
func
getImageFromResponse
(
data
:
Data
?,
response
:
URLResponse
?,
error
:
Error
?)
{
guard
error
==
nil
else
{
print
(
"Error:
\(
error
!
)
"
)
return
}
guard
let
data
=
data
else
{
print
(
"No data found"
)
return
}
DispatchQueue
.
main
.
async
{
guard
let
loadedImage
=
UIImage
(
data
:
data
)
else
{
return
}
self
.
imageCache
.
set
(
forKey
:
self
.
urlString
!
,
image
:
loadedImage
)
self
.
image
=
loadedImage
}
}
init
(
urlString
:
String
)
{
self
.
urlString
=
urlString
loadImage
()
}
}
class
ImageCache
{
var
cache
=
NSCache
<
NSString
,
UIImage
>
()
func
get
(
forKey
:
String
)
->
UIImage
?
{
return
cache
.
object
(
forKey
:
NSString
(
string
:
forKey
))
}
func
set
(
forKey
:
String
,
image
:
UIImage
)
{
cache
.
setObject
(
image
,
forKey
:
NSString
(
string
:
forKey
))
}
}
extension
ImageCache
{
private
static
var
imageCache
=
ImageCache
()
static
func
getImageCache
()
->
ImageCache
{
return
imageCache
}
}
...
...
@@ -286,29 +350,25 @@ extension GiftsView {
}
struct
ImageView
:
View
{
@ObservedObject
var
imageLoader
:
ImageLoaderGifts
@State
var
image
:
UIImage
=
UIImage
()
@ObservedObject
var
imageLoader
:
UrlImageModel
@State
var
width
:
CGFloat
@State
var
isFill
:
Bool
var
uiscreen
=
UIScreen
.
main
.
bounds
init
(
withURL
url
:
String
,
width
:
CGFloat
,
isFill
:
Bool
)
{
imageLoader
=
ImageLoaderGifts
(
urlString
:
url
)
imageLoader
=
UrlImageModel
(
urlString
:
url
)
self
.
width
=
width
self
.
isFill
=
isFill
}
var
body
:
some
View
{
Image
(
uiImage
:
image
)
Image
(
uiImage
:
imageLoader
.
image
??
UIImage
()
)
.
resizable
()
.
aspectRatio
(
contentMode
:
isFill
?
.
fill
:
.
fit
)
.
frame
(
width
:
self
.
width
)
.
frame
(
maxHeight
:
.
infinity
)
.
onReceive
(
imageLoader
.
didChange
)
{
data
in
self
.
image
=
UIImage
(
data
:
data
)
??
UIImage
()
}
}
}
...
...
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/MyApi.h
View file @
6619396
...
...
@@ -19,6 +19,7 @@
-
(
void
)
setLang
:(
NSString
*
)
lang
;
-
(
UIViewController
*
)
openCoupons
:(
UIView
*
)
parentView
;
-
(
UIViewController
*
)
openCoupon
:(
UIView
*
)
parentView
coupon
:
(
NSDictionary
*
)
coupon
;
-
(
UIViewController
*
)
openCouponBarcode
:(
UIView
*
)
parentView
coupon
:
(
NSDictionary
*
)
coupon
;
-
(
UIViewController
*
)
openGifts
:(
UIView
*
)
parentView
;
-
(
UIViewController
*
)
openWallet
:(
UIView
*
)
parentView
;
-
(
UIViewController
*
)
openMoreForYou
:(
UIView
*
)
parentView
;
...
...
WarplySDKFrameworkIOS/WarplySDKFrameworkIOS/MyApi.m
View file @
6619396
...
...
@@ -59,6 +59,12 @@ NSString *LANG;
return
couponViewController
;
}
-
(
UIViewController
*
)
openCouponBarcode
:
(
UIView
*
)
parentView
coupon
:
(
NSDictionary
*
)
coupon
{
UIViewController
*
couponBarcodeViewController
=
[
CouponBarcodeViewInterface
couponBarcodeViewController
:
parentView
:
coupon
];
return
couponBarcodeViewController
;
}
-
(
UIViewController
*
)
openGifts
:
(
UIView
*
)
parentView
{
UIViewController
*
giftsViewController
=
[
GiftsViewInterface
giftsViewController
:
parentView
];
...
...
Please
register
or
login
to post a comment