git.iko.soy/dashared/hookah-tau
on develop help sign in
декомпозиция расчета периода брони, подправила картинки и период брони на вертелке 2, фильтрация на 2 экран периодов бронирования столика, создание брони по кнопке на 2 экране, закрашиваются занятые интервалы на 2 экране брони
commit598d4e588273841790c1e90603f0f10defda89d8 authorDarya Rednikina <rednikina.com@yandex.ru> dateTue 3 Dec 2019, 15:06 (7 years ago) parent5807a88
16 files changed+175−96
Hookah Tau/API/APIClient.swift+1 Hookah Tau/Controllers/Client/Reservations/Steps/1/FirstStepReservationViewController.swift+6−2 Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepReservationCoordinator.swift+3−1 Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepReservationViewController.swift+17−12 Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepView.swift+107−49 Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepView.xib+3−2 Hookah Tau/Extensions+Date.swift+8−7 Hookah Tau/HFunc.swift+28−6 Hookah Tau/Supporting Files/Assets.xcassets/fff.imageset/Contents.json → Hookah Tau/Supporting Files/Assets.xcassets/Group.imageset/Contents.json+1−1 Hookah Tau/Supporting Files/Assets.xcassets/Group.imageset/Group.pdf Hookah Tau/Supporting Files/Assets.xcassets/fff.imageset/fff.pdf Hookah Tau/Supporting Files/Assets.xcassets/handle_left.imageset/Contents.json+1−1 Hookah Tau/Supporting Files/Assets.xcassets/handle_left.imageset/handle.pdf Hookah Tau/Supporting Files/Assets.xcassets/handle_left.imageset/handle_left.pdf Hookah Tau/Supporting Files/Assets.xcassets/hhhh.pdf.imageset/Contents.json−15 Hookah Tau/Supporting Files/Assets.xcassets/hhhh.pdf.imageset/hhhh.pdf.pdf
Hookah Tau/API/APIClient.swift+1
@@ -50,6 +50,7 @@ class APIClient {
5050 }
5151 case 422:
5252 if let data = response.data, let error = SE.fromJSONToSelf(data: data) {
53+ print(error)
5354 return GeneralError.serverError(error)
5455 }
5556
Hookah Tau/Controllers/Client/Reservations/Steps/1/FirstStepReservationViewController.swift+6−2
@@ -139,9 +139,13 @@ class FirstStepReservationViewController: BaseViewController {
139139 let map = mapView
140140
141141 guard let startTime = firstStepView?.fullDate else { return }
142+ let isAdmin = DataStorage.standard.getUserModel()?.isAdmin ?? false
142143
143− let reservPeriods = HFunc.main.filterPeriodsInDate(allReservations?.reservations[tableId] ?? [],
144− startTime)
144+ let (start, end) = isAdmin ? startTime.getAdminStartingAndEndPoint() : startTime.getClientStartingAndEndPoint()
145+
146+ let reservPeriods = HFunc.main.filterPeriodsStartEndDates(allReservations?.reservations[tableId] ?? [],
147+ start,
148+ end)
145149
146150 let model = SecondStepModel(establishment: establishmentId,
147151 table: tableId,
Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepReservationCoordinator.swift+3−1
@@ -42,7 +42,7 @@ class SecondStepReservationCoordinator: BaseCoordinator {
4242 didFinish?(mapView)
4343 }
4444
45− func book(_ mapView: MapImageScroll?) {
45+ func book(_ mapView: MapImageScroll?, reservation: Reservation) {
4646 let coordinator = ThirdStepReservationCoordinator(navigationController: navigationController)
4747 addDependency(coordinator)
4848
@@ -55,6 +55,8 @@ class SecondStepReservationCoordinator: BaseCoordinator {
5555 }
5656
5757 coordinator.mapView = mapView
58+ coordinator.resrvation = reservation
59+
5860 coordinator.start()
5961 }
6062}
Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepReservationViewController.swift+17−12
@@ -30,13 +30,6 @@ class SecondStepReservationViewController: BaseViewController {
3030 /// address of the building to display in nav bar title
3131 var address: String = "Покровский бр., 11"
3232
33− /// booked periods for this table for this date
34− var bookedPeriods: [ReservationPeriod] = [] {
35− didSet {
36− secondStepView?.setUpReservedIntervals(bookedPeriods)
37− }
38− }
39−
4033 let confirmButton: Button = {
4134 let button = Button()
4235 let style = BlackButtonStyle()
@@ -99,10 +92,10 @@ class SecondStepReservationViewController: BaseViewController {
9992
10093 let width = view.frame.width
10194
102− mapView?.scrollViewParent.setContentOffset(CGPoint(x: 0, y: 100), animated: false)
95+ mapView?.scrollViewParent.setContentOffset(CGPoint(x: 0, y: -100), animated: false)
10396 mapView?.scrollViewParent.contentInset = UIEdgeInsets(top: 100,
10497 left: width / 2,
105− bottom: 0,
98+ bottom: 100,
10699 right: width / 2)
107100 mapView?.isUserInteractionEnabled = false
108101 view.sendSubviewToBack(map)
@@ -129,9 +122,21 @@ class SecondStepReservationViewController: BaseViewController {
129122 }
130123
131124 @objc func book() {
132−// guard let data = ReservationData(establishment: model?.establishment,
133−// startTime: , endTime: <#T##Date#>, numberOfGuests: <#T##Int#>, reservedTable: <#T##Int#>)
125+ guard let booking = secondStepView?.data else { return }
126+ confirmButton.loading = true
134127
135− coordinator?.book(mapView)
128+ print(booking)
129+
130+ reservationService?.createReservation(data: booking, completion: { [weak self] (result) in
131+ switch result {
132+ case .failure:
133+ self?.displayAlert(with: "Не удалось совершить бронирование :(")
134+
135+ case .success(let reservation):
136+ self?.coordinator?.book(self?.mapView, reservation: reservation)
137+ }
138+
139+ self?.confirmButton.loading = false
140+ })
136141 }
137142}
Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepView.swift+107−49
@@ -18,7 +18,7 @@ struct SecondStepModel {
1818
1919class SecondStepView: UIView {
2020
21− // MARK: - Properties
21+ // MARK: - IBAOutlets
2222
2323 @IBOutlet weak var totalBookingLabel: UILabel!
2424
@@ -32,6 +32,14 @@ class SecondStepView: UIView {
3232
3333 @IBOutlet weak var intervalsStackView: UIStackView!
3434
35+ // MARK: - Peoperties
36+
37+ /// Время начала вертелки.
38+ /// Для клиента это 12:00 смены (надо вызвать метод для получения текущей смены).
39+ /// Для администратора это `t` - 24h
40+ var startDate: Date?
41+
42+ /// Модель вьюшки
3543 var data: ReservationData? {
3644 didSet {
3745 guard let d = data else { return }
@@ -40,6 +48,7 @@ class SecondStepView: UIView {
4048 }
4149 }
4250
51+ /// Модель с которой мы приходим в эту вьюшку
4352 var model: SecondStepModel? {
4453 didSet {
4554 guard let model = model else { return }
@@ -50,12 +59,20 @@ class SecondStepView: UIView {
5059 numberOfGuests: Int(guestSlider.value),
5160 reservedTable: model.table)
5261
53− setUpIntervals(model.startTime)
54− setUpReservedIntervals(model.reservedintervals)
62+ // isAdmin
63+ let isAdmin = DataStorage.standard.getUserModel()?.isAdmin ?? false
64+
65+ let (start, _) = isAdmin ? model.startTime.getAdminStartingAndEndPoint() : model.startTime.getClientStartingAndEndPoint()
66+
67+ startDate = start
68+
69+ setUpIntervals(isAdmin)
70+ setUpReservedIntervals(model.reservedintervals, isAdmin)
5571 setUpBookingPeriod(model.startTime)
5672 }
5773 }
5874
75+ // констрейнты начала и конца интервала
5976 var startLeadingConstraint: NSLayoutConstraint!
6077 var endLeadingConstraint: NSLayoutConstraint!
6178
@@ -70,11 +87,12 @@ class SecondStepView: UIView {
7087 var endPoint: UIImageView = {
7188 var view = UIImageView()
7289 view.isUserInteractionEnabled = true
73− view.image = #imageLiteral(resourceName: "fff")
90+ view.image = #imageLiteral(resourceName: "Group")
7491 view.translatesAutoresizingMaskIntoConstraints = false
7592 return view
7693 }()
7794
95+ /// Интервал
7896 var fillInterval: UIView = {
7997 var view = UIView()
8098 view.backgroundColor = #colorLiteral(red: 0, green: 0.5921568627, blue: 1, alpha: 0.3426262843)
@@ -82,8 +100,6 @@ class SecondStepView: UIView {
82100 return view
83101 }()
84102
85− var duration: Int? = 1
86−
87103 // MARK: - Lifecycle
88104
89105 override func awakeFromNib() {
@@ -114,10 +130,9 @@ class SecondStepView: UIView {
114130
115131 // MARK: - Setup
116132
117− func setUpIntervals(_ stTime: Date) {
118− let isAdmin = DataStorage.standard.getUserModel()?.isAdmin ?? false
119−
120− let (startPoint, _) = isAdmin ? stTime.getAdminStartingAndEndPoint() : stTime.getClientStartingAndEndPoint()
133+ /// Тут происходит установка интервалов. Разное для клиента и админа
134+ func setUpIntervals(_ isAdmin: Bool) {
135+ guard let startPoint = startDate else { return }
121136
122137 let startingPoint = isAdmin ? startPoint.getAdminsStartingPoint() : Constants.clientStartingPoint
123138 let endingPoint = startingPoint + (isAdmin ? Constants.adminDuration : Constants.clientDuration)
@@ -138,9 +153,9 @@ class SecondStepView: UIView {
138153 self.scrollView.addSubview(endPoint)
139154 self.scrollView.addSubview(fillInterval)
140155
141− let startDate = startTime.set(hours: 12, minutes: 0, seconds: 0)!// for client
156+ guard let startDate = startDate else { return }
142157
143− let startConstr = CGFloat(startTime.getMinutesPeriods(fromStart: startDate) * Constants.timepointWidth)
158+ let startConstr = CGFloat(startTime.getMinutesPeriods(fromStart: startDate) * Constants.widthTimePoint)
144159
145160 scrollView.setContentOffset(CGPoint(x: startConstr - 50, y: 0), animated: true)
146161
@@ -148,7 +163,7 @@ class SecondStepView: UIView {
148163 constant: startConstr)
149164
150165 endLeadingConstraint = endPoint.leftAnchor.constraint(equalTo: scrollView.leftAnchor,
151− constant:startConstr + CGFloat(10 * Constants.timepointWidth))
166+ constant:startConstr + Constants.minBookingLength)
152167
153168 NSLayoutConstraint.activate([
154169
@@ -178,8 +193,39 @@ class SecondStepView: UIView {
178193 endPoint.addGestureRecognizer(scrollViewPanEndGesture)
179194 }
180195
181− func setUpReservedIntervals(_ reservations: [ReservationPeriod]) {
196+ func setUpReservedIntervals(_ reservations: [ReservationPeriod], _ isAdmin: Bool) {
197+
198+ for reservation in reservations {
199+ let uiview = UIView(frame: CGRect(x: 0, y: 0, width: Constants.widthTimePoint * reservation.duration, height: Constants.heightIntervals))
200+ uiview.backgroundColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 0.5)
201+
202+
203+ uiview.translatesAutoresizingMaskIntoConstraints = false
204+ scrollView.addSubview(uiview)
182205
206+ guard let startDate = startDate else { return }
207+
208+ let s = reservation.startTime.getMinutesPeriods(fromStart: startDate) * Constants.widthTimePoint
209+ let d = reservation.duration * Constants.widthTimePoint
210+
211+ let startTime = s < 0 ? 0 : s
212+
213+ let total = (isAdmin ? Constants.adminDuration : Constants.clientDuration) * Constants.widthTimePoint
214+ var duration = 0
215+ if s < 0 {
216+ duration = reservation.endTime.getMinutesPeriods(fromStart: startDate) * Constants.widthTimePoint
217+ } else {
218+ duration = (s + d) > total ? total - s : d
219+ }
220+
221+ NSLayoutConstraint.activate([
222+ uiview.bottomAnchor.constraint(equalToSystemSpacingBelow: scrollView.bottomAnchor, multiplier: 0),
223+ uiview.leftAnchor.constraint(equalTo: scrollView.leftAnchor,
224+ constant: CGFloat(Constants.widthTimePoint / 2 + startTime)),
225+ uiview.widthAnchor.constraint(equalToConstant: CGFloat(duration)),
226+ uiview.heightAnchor.constraint(equalToConstant: CGFloat(Constants.heightIntervals))
227+ ])
228+ }
183229 }
184230
185231 func bind(model: SecondStepModel) {
@@ -193,57 +239,60 @@ class SecondStepView: UIView {
193239 // MARK: - Pan
194240
195241 @objc func handlePanStart(recognizer:UIPanGestureRecognizer) {
196− guard let d = data else { return }
197242
198− let translation = recognizer.translation(in: self.intervalsStackView)
199− if let view = recognizer.view {
243+ let translation = recognizer.translation(in: self.intervalsStackView)
244+ let duration = abs(startLeadingConstraint.constant + translation.x - endLeadingConstraint.constant)
245+
246+ if let view = recognizer.view, duration >= Constants.minBookingLength {
200247 startLeadingConstraint.constant += translation.x
201248
202− let offset = Int(startLeadingConstraint.constant) % Constants.timepointWidth
203− if offset == 0 {
204−
205− let startDate = d.startTime.set(hours: 12, minutes: 0, seconds: 0)!// for client
206− let p = Int(startLeadingConstraint.constant) / Constants.timepointWidth
207− let start = startDate.addPeriods(p)
208−
209− data = ReservationData(establishment: d.establishment,
210− startTime: start,
211− endTime: d.endTime,
212− numberOfGuests: d.numberOfGuests,
213− reservedTable: d.reservedTable)
214− }
249+ changeTime(startLeadingConstraint, .start)
215250
216251 view.setNeedsUpdateConstraints()
217252 }
218253
219−
220− recognizer.setTranslation(CGPoint.zero, in: self.intervalsStackView)
254+ recognizer.setTranslation(CGPoint.zero, in: self.intervalsStackView)
221255 }
222256
223257 @objc func handlePanEnd(recognizer:UIPanGestureRecognizer) {
224− guard let d = data else { return }
225258
226− let translation = recognizer.translation(in: self.intervalsStackView)
227− if let view = recognizer.view {
259+ let translation = recognizer.translation(in: self.intervalsStackView)
260+ let duration = abs(startLeadingConstraint.constant - (endLeadingConstraint.constant + translation.x))
261+
262+ if let view = recognizer.view, duration >= Constants.minBookingLength {
228263 endLeadingConstraint.constant += translation.x
229264
230− let offset = Int(endLeadingConstraint.constant) % Constants.timepointWidth
231− if offset == 0 {
232− let startDate = d.startTime.set(hours: 12, minutes: 0, seconds: 0)!// for client
233− let p = Int(endLeadingConstraint.constant) / Constants.timepointWidth
234− let end = startDate.addPeriods(p)
235−
265+ changeTime(endLeadingConstraint, .end)
266+ view.setNeedsUpdateConstraints()
267+ }
268+
269+ recognizer.setTranslation(CGPoint.zero, in: self.intervalsStackView)
270+ }
271+
272+ func changeTime(_ constraint: NSLayoutConstraint, _ period: Period) {
273+ guard let startDate = startDate, let d = data else { return }
274+
275+ let offset = Int(constraint.constant) % Constants.widthTimePoint
276+
277+ if offset == 0 {
278+ let p = Int(constraint.constant) / Constants.widthTimePoint
279+ let time = startDate.addPeriods(p)
280+
281+ switch period {
282+ case .start:
283+ data = ReservationData(establishment: d.establishment,
284+ startTime: time,
285+ endTime: d.endTime,
286+ numberOfGuests: d.numberOfGuests,
287+ reservedTable: d.reservedTable)
288+ case .end:
236289 data = ReservationData(establishment: d.establishment,
237290 startTime: d.startTime,
238− endTime: end,
291+ endTime: time,
239292 numberOfGuests: d.numberOfGuests,
240293 reservedTable: d.reservedTable)
241294 }
242−
243− view.setNeedsUpdateConstraints()
244− }
245−
246− recognizer.setTranslation(CGPoint.zero, in: self.intervalsStackView)
295+ }
247296 }
248297}
249298
@@ -255,7 +304,7 @@ extension SecondStepView: UIScrollViewDelegate {
255304
256305extension SecondStepView {
257306 enum Constants {
258− static let timepointWidth = 11
307+ static let widthTimePoint = 11
259308
260309 static let adminDuration = 288
261310 static let clientDuration = 90
@@ -263,6 +312,15 @@ extension SecondStepView {
263312 static let clientStartingPoint = 72
264313
265314 static let pointWidth: CGFloat = 19
266− static let pointHeight: CGFloat = 86
315+ static let pointHeight: CGFloat = 85
316+
317+ static let minBookingLength: CGFloat = 132
318+
319+ static let heightIntervals = 85
320+ }
321+
322+ enum Period {
323+ case start
324+ case end
267325 }
268326}
Hookah Tau/Controllers/Client/Reservations/Steps/2/SecondStepView.xib+3−2
@@ -62,7 +62,7 @@
6262 </subviews>
6363 </stackView>
6464 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RJE-Hk-KNh">
65− <rect key="frame" x="0.0" y="268" width="414" height="106"/>
65+ <rect key="frame" x="0.0" y="252" width="414" height="106"/>
6666 <subviews>
6767 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dmc-2e-y3T">
6868 <rect key="frame" x="0.0" y="21" width="414" height="85"/>
@@ -128,10 +128,11 @@
128128 </subviews>
129129 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
130130 <constraints>
131+ <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="RJE-Hk-KNh" secondAttribute="bottom" constant="36" id="0W3-e2-hCU"/>
131132 <constraint firstItem="9c7-IZ-n2p" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="20" id="94y-7J-ksb"/>
132133 <constraint firstItem="9c7-IZ-n2p" firstAttribute="top" secondItem="bJ1-1q-VXq" secondAttribute="bottom" constant="30" id="9TT-vO-7PZ"/>
133134 <constraint firstItem="RJE-Hk-KNh" firstAttribute="trailing" secondItem="vUN-kp-3ea" secondAttribute="trailing" id="AgS-kP-UNE"/>
134− <constraint firstItem="RJE-Hk-KNh" firstAttribute="top" secondItem="9c7-IZ-n2p" secondAttribute="bottom" constant="36" id="FAI-xj-uWk"/>
135+ <constraint firstItem="RJE-Hk-KNh" firstAttribute="top" secondItem="9c7-IZ-n2p" secondAttribute="bottom" constant="20" id="FAI-xj-uWk"/>
135136 <constraint firstAttribute="trailing" secondItem="bJ1-1q-VXq" secondAttribute="trailing" constant="20" id="OCH-eC-kP5"/>
136137 <constraint firstItem="bJ1-1q-VXq" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="20" id="PCm-nY-M6p"/>
137138 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="9c7-IZ-n2p" secondAttribute="trailing" constant="20.5" id="Rh7-V2-v2u"/>
Hookah Tau/Extensions+Date.swift+8−7
@@ -167,20 +167,21 @@ extension Date {
167167 }
168168
169169 func getClientStartingAndEndPoint() -> (Date, Date) {
170− let utcDate = self.getUTCDate()
171−
172170 // час
173− let hour = Calendar.current.dateComponents([.hour], from: utcDate).hour!
171+ var calendar = Calendar.current
172+ calendar.timeZone = TimeZone(abbreviation: "UTC")!
173+
174+ let hour = calendar.dateComponents([.hour], from: self).hour!
174175
175176 if hour >= 0 && hour <= 3 { // [ 00:00 ... 3:00 ]
176− let endDate = utcDate.set(hours: 3, minutes: 0, seconds: 0)! // 3 00
177− let start = Calendar.current.date(byAdding: .day, value: -1, to: utcDate)!
177+ let endDate = self.set(hours: 3, minutes: 0, seconds: 0)! // 3 00
178+ let start = calendar.date(byAdding: .day, value: -1, to: self)!
178179 let startDate = start.set(hours: 12, minutes: 0, seconds: 0)! // 12 00
179180
180181 return (startDate, endDate)
181182 } else { // [12:00 ... 23:50]
182− let startDate = utcDate.set(hours: 12, minutes: 0, seconds: 0)! // 12 00
183− let end = Calendar.current.date(byAdding: .day, value: 1, to: utcDate)!
183+ let startDate = self.set(hours: 12, minutes: 0, seconds: 0)! // 12 00
184+ let end = calendar.date(byAdding: .day, value: 1, to: self)!
184185 let endDate = end.set(hours: 3, minutes: 0, seconds: 0)! // 3 00
185186
186187 return (startDate, endDate)
Hookah Tau/HFunc.swift+28−6
@@ -15,7 +15,25 @@ class HFunc {
1515
1616 static let main = HFunc()
1717
18+
19+ /// Filtering function to get every periods which intersects with given date
20+ /// - Parameter periods: all periods of bookings (for a particular table)
21+ /// - Parameter today: date
22+ func filterPeriodsInDate(_ periods: [ReservationPeriod], _ today: Date) -> [ReservationPeriod] {
23+ return periods.filter(filterPeriod(today))
24+ }
25+
26+
27+ /// Filtering func to get every intersecting period for the table. Useful for 2nd booning screen
28+ /// - Parameter periods: Periods for the table
29+ /// - Parameter start: for client 12:00, for admin t - 24h
30+ /// - Parameter end: for client 3:00, for admin t + 24h
31+ func filterPeriodsStartEndDates(_ periods: [ReservationPeriod], _ start: Date, _ end: Date) -> [ReservationPeriod] {
32+ return periods.filter(filterInInterval(start, end))
33+ }
34+
1835 private func filterPeriod(_ today: Date) -> ((ReservationPeriod) -> Bool) {
36+
1937 func datePredicate(_ start: Date, _ end: Date, _ current: Date) -> Bool {
2038 var calendar = Calendar.current
2139 calendar.timeZone = TimeZone(identifier: "GMT")!
@@ -29,11 +47,15 @@ class HFunc {
2947 return { (period: ReservationPeriod) in datePredicate(period.startTime, period.endTime, today) }
3048 }
3149
32−
33− /// Filtering function to get every periods which intersects with given date
34− /// - Parameter periods: all periods of bookings (for a particular table)
35− /// - Parameter today: date
36− func filterPeriodsInDate(_ periods: [ReservationPeriod], _ today: Date) -> [ReservationPeriod] {
37− return periods.filter(filterPeriod(today))
50+ private func filterInInterval(_ start: Date, _ end: Date) -> ((ReservationPeriod) -> Bool) {
51+
52+ let dateInterval = DateInterval(start: start, end: end)
53+ func intervalChecking(_ sp: Date, _ ep: Date) -> Bool {
54+ let innerInterval = DateInterval(start: sp, end: ep)
55+
56+ return dateInterval.intersects(innerInterval)
57+ }
58+
59+ return { (period: ReservationPeriod) in intervalChecking(period.startTime, period.endTime) }
3860 }
3961}
Hookah Tau/Supporting Files/Assets.xcassets/fff.imageset/Contents.json → Hookah Tau/Supporting Files/Assets.xcassets/Group.imageset/Contents.jsonrenamed+1−1
@@ -2,7 +2,7 @@
22 "images" : [
33 {
44 "idiom" : "universal",
5− "filename" : "fff.pdf"
5+ "filename" : "Group.pdf"
66 }
77 ],
88 "info" : {
Hookah Tau/Supporting Files/Assets.xcassets/Group.imageset/Group.pdfnew file

Binary file not shown.

Hookah Tau/Supporting Files/Assets.xcassets/fff.imageset/fff.pdfdeleted

Binary file not shown.

Hookah Tau/Supporting Files/Assets.xcassets/handle_left.imageset/Contents.json+1−1
@@ -2,7 +2,7 @@
22 "images" : [
33 {
44 "idiom" : "universal",
5− "filename" : "handle_left.pdf"
5+ "filename" : "handle.pdf"
66 }
77 ],
88 "info" : {
Hookah Tau/Supporting Files/Assets.xcassets/handle_left.imageset/handle.pdfnew file

Binary file not shown.

Hookah Tau/Supporting Files/Assets.xcassets/handle_left.imageset/handle_left.pdfdeleted

Binary file not shown.

Hookah Tau/Supporting Files/Assets.xcassets/hhhh.pdf.imageset/Contents.jsondeleted−15
@@ -1,15 +0,0 @@
1−{
2− "images" : [
3− {
4− "idiom" : "universal",
5− "filename" : "hhhh.pdf.pdf"
6− }
7− ],
8− "info" : {
9− "version" : 1,
10− "author" : "xcode"
11− },
12− "properties" : {
13− "preserves-vector-representation" : true
14− }
15−}
Hookah Tau/Supporting Files/Assets.xcassets/hhhh.pdf.imageset/hhhh.pdf.pdfdeleted

Binary file not shown.