Skip to content

Commit

Permalink
New course info screen (#423)
Browse files Browse the repository at this point in the history
* Course info: info tab UI (#406)

* Add image resources

* Add course info localizable strings

* Create course info text block view

* Create course info instructors block view

* Layout instructors

* Better spacing

* Update instructors description text color

* Add intro tmp imageView

* Round instructor avatar

* Fix with spacing

* Refactor rename course info type

* Create CourseInfoSkeletonView file

* Create new group CourseInfoTab

* Create view and view model groups

* Load avatar image

* Remove image literal

* Use constructors with no params

* Create CourseInfoTabInfoViewDelegate

* Change type of intro URL

* Refactor extract configure with view model method

* Create block views builder

* Make intro video view

* Refactor rename CourseInfoSkeletonView -> CourseInfoTabInfoSkeletonView

* Remove unnecessary content insets

* Tmp for skeleton

* Add skeletons

* Rearrange groups

* Format code

* Create view controller

* Fix skeleton constraints

* Simplify info block skeleton constraints

* Fix course info block skeleton view setup

* Refactor rename imageView -> iconImageView

* Fix make concreate course info tab view lazy

* Use configure(viewModel:) style

* Remove viewModel from view's constructors

* Refactor rename imageView -> previewImageView

* Use main dark color

* Remove JoinButton appearance struct

* Refactor rename CourseInfoTabInfoBlockType -> CourseInfoTabInfoBlock

* Use inner elements and blocks insets

Vertical spacing:
- Between inner elements 20
- Between blocks 40

* Update source files headers

* Use stepik green color

* Apply fixes for blocks

* Fixes

* Remove private(set) for lazy property

* Refactor rename

Rename CourseInfoTabInfoBlockSkeletonView.swift -> CourseInfoTabInfoHeaderSkeletonView.swift

* Refactor rename

Rename CourseInfoTabInfoHeaderSkeletonView.swift -> CourseInfoTabInfoHeaderBlockSkeletonView.swift

* Refactor rename
Rename CourseInfoTabInfoHeaderView.swift -> CourseInfoTabInfoHeaderBlockView.swift

* Add author view with function

* Use CourseCoverImageView as instructors avatar image view

* Open appearance

* Course info: container UI & header (#404)

* Navigation bar

* Navigation bar

* Scroll view

* blur

* header

* fix steps

* fix extended edges

* fix status bar

* fix

* fix color

* fix scroll

* Fix bounds

* Minor fixes

* Add .zero as default value to init

* Minor fix

* Course info: segmented control (#405)

* segmented control view

* Delegate

* Course info: download button (#413)

* Download button

* Fix

* Course info: modules UI (#415)

* Navigation bar

* Navigation bar

* Scroll view

* blur

* header

* fix steps

* fix extended edges

* fix status bar

* fix

* fix color

* fix scroll

* Fix bounds

* Minor fixes

* Add .zero as default value to init

* Minor fix

* Course info: segmented control (#405)

* segmented control view

* Delegate

* Table header view (with strange behaviour)

* Section header

* Lesson

* Minor fix

* Minor fixes

* Course info: info tab logic (#411)

* Add image resources

* Add course info localizable strings

* Create course info text block view

* Create course info instructors block view

* Layout instructors

* Better spacing

* Update instructors description text color

* Add intro tmp imageView

* Round instructor avatar

* Fix with spacing

* Refactor rename course info type

* Create CourseInfoSkeletonView file

* Create new group CourseInfoTab

* Create view and view model groups

* Load avatar image

* Remove image literal

* Use constructors with no params

* Create CourseInfoTabInfoViewDelegate

* Change type of intro URL

* Refactor extract configure with view model method

* Create block views builder

* Make intro video view

* Refactor rename CourseInfoSkeletonView -> CourseInfoTabInfoSkeletonView

* Remove unnecessary content insets

* Tmp for skeleton

* Add skeletons

* Rearrange groups

* Format code

* Create view controller

* Fix skeleton constraints

* Simplify info block skeleton constraints

* Fix course info block skeleton view setup

* Refactor rename imageView -> iconImageView

* Fix make concreate course info tab view lazy

* Use configure(viewModel:) style

* Remove viewModel from view's constructors

* Refactor rename imageView -> previewImageView

* Use main dark color

* Remove JoinButton appearance struct

* Refactor rename CourseInfoTabInfoBlockType -> CourseInfoTabInfoBlock

* Use inner elements and blocks insets

Vertical spacing:
- Between inner elements 20
- Between blocks 40

* Update source files headers

* Use stepik green color

* Apply fixes for blocks

* Fixes

* Remove private(set) for lazy property

* Refactor rename

Rename CourseInfoTabInfoBlockSkeletonView.swift -> CourseInfoTabInfoHeaderSkeletonView.swift

* Refactor rename

Rename CourseInfoTabInfoHeaderSkeletonView.swift -> CourseInfoTabInfoHeaderBlockSkeletonView.swift

* Refactor rename
Rename CourseInfoTabInfoHeaderView.swift -> CourseInfoTabInfoHeaderBlockView.swift

* Add author view with function

* Make module

* Show dummy info

* Fetch instructors

* Test course info header blocks resources

* Add timeToComplete attribute to the Course entity

* Pluralize time to complete

* Add language attribute to the Course entity

* Localize language

* Add certificate details localizables

* Add certificate threshold attributes to the Course entity

* Format certificate details

* Initial tests for CourseInfoTabInfoPresenter

* Refactor rename

* Use Nimble assertions

* Use Quick

* Set HTML text

* Highlight author

* Add authors attributes to the model

* Show formatted author text

* Trim text

* Filter empty views

* Handle course action

Join course when not enrolled and continue learning from the last step when already enrolled.

* Format certificate text

* Update instructor's description label top offset when empty

* Fix certificate titles

* Set instructors description with HTML text

* Optimize authors and instructors fetching

* Provide intro video url and thumbnail

* Handle click on thumbnail

* Add thumbnail placeholer

* Fix play view centering

* Play intro video

* Fix status bar on exit fullscreen

* Use CourseCoverImageView as instructors avatar image view

* Open appearance

* Add fixes

* Move CourseInfoTabInfoInputProtocol conformance to extension

* Remove states from presenter

* Refactor rename addAuthorView(author:) -> addAuthorView(authorName:)

* Use actionButton prefix

* Move hours from seconds formatting to FormatterHelper

* Create CourseInfoTabInfoViewModelAdapter

* Revert UIViewControllerBasedStatusBarAppearance change

* Change status bar visibility

* Update users fetching

* Update instructor description top constraint

* Move player to controller

* Init player

* Use weak self

* Remove tests :( :( :( :(

* Course info: container logic (#426) & syllabus (#438)

* Merge UI

* Correct intrinsic size for info tab

* Segmented control & scrollview

* Skeleton

* Load course in container

* Info tab

* Video fixes

* Fix instructors

* 16:9 ratio for videos

* Users service for provider

* Fix status bar & header

* Dynamic header height

* Minor fixes

* Fixes

* NSLock -> DispatchSemaphore

* Fix white background

* Course info: syllabus content logic & downloads (#438)

* module basic files

* uipageviewcontroller instead of uiscrollview

* syllabus

* Downloading service

* Routing to info/syllabus tab

* show correct download state

* handle download click

* downloads 💩

* downloads interaction service

* Fixes

* remove unused

* wrapped unit in view model

* Sections deadlines

* Layout fixes

* Completion & failure events

* Add enrolled state

* Fix deep link & last step routers

* Next & previous units service (#422)

* NextLessonService

* Fixes & tests

* fixes

* Present controller with lesson

* Fixes for SDK 11

* Set build for current branch

* Fix navigation bar issues

* Personal deadlines

* Fix after rename

* Exam in syllabus

* "More actions" alert & course sharing

* Main action & drop course

* Set version to 1.75 & increment build

* Add tap proxy view for download buttons

* Fix deadlines view

* Next / previous lesson

* Hide syllabus tab for adaptive courses

* Personal deadlines tooltip

* Make enabled-disabled visual state for cells

* Remove "Downloads" from Settings

* "Download all" logic

* Fix new discussion layout (12 sdk)

* Fix video quality (12 sdk)

* Fix certificates layout (12 sdk)

* Remove action button tab

* Fix semaphore dispose crash

* Update button state after remove

* Set version to 1.76 & increment build

* Fixed downloads

* Force populate sections

* Fix empty units download state error

* Analytics & small fixes

* Remove unused code

* Fix iPad & landscape

* Bump build

* Fixes
  • Loading branch information
kvld authored Jan 29, 2019
1 parent c4a73d6 commit 2695cd5
Show file tree
Hide file tree
Showing 254 changed files with 14,122 additions and 1,223 deletions.
6 changes: 4 additions & 2 deletions Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ def shared_pods
pod 'SVGKit', :git => 'https://github.com/SVGKit/SVGKit.git', :branch => '2.x'
pod 'Fabric', '1.7.11'
pod 'Crashlytics', '3.10.7'
pod 'DeviceKit', '1.7.0'
pod 'DeviceKit', '1.10.0'
pod 'PromiseKit', '6.3.4'
pod 'SwiftLint', '0.27.0'
pod 'Reveal-SDK', :configurations => ['Debug']
end

def all_pods
Expand Down Expand Up @@ -57,11 +58,12 @@ def all_pods
pod 'lottie-ios', '2.5.0'
pod 'Koloda', '4.3.1'
pod 'Charts', '3.1.1'
pod 'EasyTipView', :git => 'https://github.com/igorkislyuk/EasyTipView.git'
pod 'EasyTipView', '2.0.1'
pod 'ActionSheetPicker-3.0', '2.3.0'
pod 'NotificationBannerSwift', '1.6.3'
pod 'Nuke', '7.3.2'
pod 'STRegex', '1.1.0'
pod 'Pageboy', '3.0.1'
pod 'Branch', '0.25.5'
end

Expand Down
84 changes: 44 additions & 40 deletions Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ PODS:
- Crashlytics (3.10.7):
- Fabric (~> 1.7.11)
- CRToast (0.0.9)
- DeviceKit (1.7.0)
- DeviceKit (1.10.0)
- DownloadButton (0.1.0)
- EasyTipView (1.1.0)
- EasyTipView (2.0.1)
- Fabric (1.7.11)
- FBSDKCoreKit (4.35.0):
- Bolts (~> 1.7)
Expand Down Expand Up @@ -67,27 +67,27 @@ PODS:
- "GoogleUtilities/NSData+zlib (~> 5.2)"
- Protobuf (~> 3.5)
- FLAnimatedImage (1.0.12)
- GoogleAppMeasurement (5.1.1):
- GoogleUtilities/AppDelegateSwizzler (~> 5.2.0)
- GoogleUtilities/MethodSwizzler (~> 5.2.0)
- GoogleAppMeasurement (5.4.0):
- GoogleUtilities/AppDelegateSwizzler (~> 5.2)
- GoogleUtilities/MethodSwizzler (~> 5.2)
- GoogleUtilities/Network (~> 5.2)
- "GoogleUtilities/NSData+zlib (~> 5.2)"
- nanopb (~> 0.3)
- GoogleUtilities/AppDelegateSwizzler (5.2.2):
- GoogleUtilities/AppDelegateSwizzler (5.2.3):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (5.2.2)
- GoogleUtilities/Logger (5.2.2):
- GoogleUtilities/Environment (5.2.3)
- GoogleUtilities/Logger (5.2.3):
- GoogleUtilities/Environment
- GoogleUtilities/MethodSwizzler (5.2.2):
- GoogleUtilities/MethodSwizzler (5.2.3):
- GoogleUtilities/Logger
- GoogleUtilities/Network (5.2.2):
- GoogleUtilities/Network (5.2.3):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (5.2.2)"
- GoogleUtilities/Reachability (5.2.2):
- "GoogleUtilities/NSData+zlib (5.2.3)"
- GoogleUtilities/Reachability (5.2.3):
- GoogleUtilities/Logger
- HexColors (2.3.0)
- Highlightr (2.0.1)
Expand All @@ -96,25 +96,26 @@ PODS:
- Koloda (4.3.1):
- pop (~> 1.0)
- lottie-ios (2.5.0)
- MarqueeLabel/Swift (3.1.6)
- MarqueeLabel/Swift (3.2.0)
- Mockingjay (2.0.1):
- Mockingjay/Core (= 2.0.1)
- Mockingjay/XCTest (= 2.0.1)
- Mockingjay/Core (2.0.1):
- URITemplate (~> 2.0)
- Mockingjay/XCTest (2.0.1):
- Mockingjay/Core
- nanopb (0.3.8):
- nanopb/decode (= 0.3.8)
- nanopb/encode (= 0.3.8)
- nanopb/decode (0.3.8)
- nanopb/encode (0.3.8)
- nanopb (0.3.901):
- nanopb/decode (= 0.3.901)
- nanopb/encode (= 0.3.901)
- nanopb/decode (0.3.901)
- nanopb/encode (0.3.901)
- Nimble (7.1.3)
- NotificationBannerSwift (1.6.3):
- MarqueeLabel/Swift
- SnapKit (~> 4.0)
- Nuke (7.3.2)
- pop (1.0.10)
- Pageboy (3.0.1)
- pop (1.0.12)
- Presentr (1.3.2)
- PromiseKit (6.3.4):
- PromiseKit/CorePromise (= 6.3.4)
Expand All @@ -130,18 +131,19 @@ PODS:
- PromiseKit/CorePromise
- Protobuf (3.6.1)
- Quick (1.3.1)
- Reveal-SDK (20)
- RFKeyboardToolbar (1.3)
- SDWebImage (4.4.2):
- SDWebImage/Core (= 4.4.2)
- SDWebImage/Core (4.4.2)
- SDWebImage/GIF (4.4.2):
- FLAnimatedImage (~> 1.0)
- SDWebImage/Core
- SimulatorStatusMagic (2.2)
- SimulatorStatusMagic (2.4.1)
- SnapKit (4.0.0)
- STRegex (1.1.0)
- SVGKit (2.0.1):
- CocoaLumberjack (~> 3.x)
- SVGKit (2.1.0):
- CocoaLumberjack (~> 3.0)
- SVProgressHUD (2.2.5)
- SwiftLint (0.27.0)
- SwiftyJSON (4.1.0)
Expand All @@ -165,9 +167,9 @@ DEPENDENCIES:
- Charts (= 3.1.1)
- Crashlytics (= 3.10.7)
- CRToast (= 0.0.9)
- DeviceKit (= 1.7.0)
- DeviceKit (= 1.10.0)
- DownloadButton (= 0.1.0)
- EasyTipView (from `https://github.com/igorkislyuk/EasyTipView.git`)
- EasyTipView (= 2.0.1)
- Fabric (= 1.7.11)
- FBSDKCoreKit (= 4.35.0)
- FBSDKLoginKit (= 4.35.0)
Expand All @@ -184,10 +186,12 @@ DEPENDENCIES:
- Nimble (= 7.1.3)
- NotificationBannerSwift (= 1.6.3)
- Nuke (= 7.3.2)
- Pageboy (= 3.0.1)
- Presentr (= 1.3.2)
- PromiseKit (= 6.3.4)
- PromiseKit/Alamofire (= 6.3.4)
- Quick (= 1.3.1)
- Reveal-SDK
- RFKeyboardToolbar (= 1.3)
- SDWebImage (= 4.4.2)
- SDWebImage/GIF (= 4.4.2)
Expand Down Expand Up @@ -220,6 +224,7 @@ SPEC REPOS:
- CRToast
- DeviceKit
- DownloadButton
- EasyTipView
- Fabric
- FBSDKCoreKit
- FBSDKLoginKit
Expand All @@ -244,11 +249,13 @@ SPEC REPOS:
- Nimble
- NotificationBannerSwift
- Nuke
- Pageboy
- pop
- Presentr
- PromiseKit
- Protobuf
- Quick
- Reveal-SDK
- RFKeyboardToolbar
- SDWebImage
- SimulatorStatusMagic
Expand All @@ -267,8 +274,6 @@ EXTERNAL SOURCES:
Agrume:
:branch: feature/single-horizontal-dismiss
:git: https://github.com/Ostrenkiy/Agrume.git
EasyTipView:
:git: https://github.com/igorkislyuk/EasyTipView.git
SVGKit:
:branch: 2.x
:git: https://github.com/SVGKit/SVGKit.git
Expand All @@ -279,11 +284,8 @@ CHECKOUT OPTIONS:
Agrume:
:commit: a1dad047cfc1fc88670a3960a975213622145b0b
:git: https://github.com/Ostrenkiy/Agrume.git
EasyTipView:
:commit: 11de6146d447582abe0304bb287600ff93abb23a
:git: https://github.com/igorkislyuk/EasyTipView.git
SVGKit:
:commit: 733acf66e44a02396efc8a6f445d190af592d544
:commit: bfe62f6d45f55c9fe39619d9e91fed1844c59da6
:git: https://github.com/SVGKit/SVGKit.git
TSMessages:
:commit: e4802d290362c87ba8a35c1afae88668dba8ab9a
Expand All @@ -303,9 +305,9 @@ SPEC CHECKSUMS:
CocoaLumberjack: db7cc9e464771f12054c22ff6947c5a58d43a0fd
Crashlytics: ccaac42660eb9351b9960c0d66106b0bcf99f4fa
CRToast: 5a78c22b921c5ed3487488af605bc403a9c92fed
DeviceKit: 6a5bdeb103c03757bb94aef1ccb01e08bc8ef4ee
DeviceKit: 2a6cf0d1ec05e2ac7f9b24cdfdb3cb358900a247
DownloadButton: 49a21a89e0d7d1b42d9134f79aaa40e727cd57c3
EasyTipView: 236dda1a58f9a15bd39f11d84347e6b8643a744c
EasyTipView: 1515544456d6e943240012e9be5d25d1bb766603
Fabric: f233c9492b3bbc1f04e3882986740f7988a58edb
FBSDKCoreKit: 1a5b2e3ceb5ca827a53c54aa5f4a3480efff80d2
FBSDKLoginKit: 00a3d65d1226852f9d76dcddff01981e5e6d9c38
Expand All @@ -316,31 +318,33 @@ SPEC CHECKSUMS:
FirebaseMessaging: f67b3719f520ee200da0e20ce577fe2bce0c01d0
FirebaseRemoteConfig: 7b6d675dfb11f0e0e638caee00908b06af150d56
FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
GoogleAppMeasurement: f7507b39b70ad0bd80b3d81518b2f43868974307
GoogleUtilities: 06b66f9567769a7958db20a92f0128b2843e49d5
GoogleAppMeasurement: 98b71f5e04142793729a5ef23e5b96651ff4b70f
GoogleUtilities: 6f681e27050c5e130325e89fa0316dfca826f954
HexColors: 6ad3947c3447a055a3aa8efa859def096351fe5f
Highlightr: 65655134dd0d5e1320afdd8a9d880c9e9dc0b437
IQKeyboardManagerSwift: 2e7dc7f98c111458c1ea2b373f893e8cf95e2b97
Kanna: 15569a2331b79782a1753cf280c8e69e2a033654
Koloda: 0d39b2aa188ccd1fac48d752acaf9802e683c625
lottie-ios: d699fdee68d7b63e721d949388b015fef1aaa4ac
MarqueeLabel: 0c41f08ef5773e29c0f71064a8fa788a2fd8b365
MarqueeLabel: 440a502b91a9179bd98f9fff00ba1150650a1c0e
Mockingjay: 11a621880d2887f1775bdcf824341eb68f218450
nanopb: 5601e6bca2dbf1ed831b519092ec110f66982ca3
nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
Nimble: 2839b01d1b31f6a6a7777a221f0d91cf52e8e27b
NotificationBannerSwift: b231e4c3244848ef300e1c53ce027b9756b9b06f
Nuke: a9a31bbd6c6723753ab024ef22057dcaaf046c1b
pop: 82ca6b068ce9278fd350fd9dd09482a0ce9492e6
Pageboy: ec0170fd880ea6fa3589219edfd64b554443ff6e
pop: d582054913807fd11fd50bfe6a539d91c7e1a55a
Presentr: 797ae6ec8904eaba4ec58a4c2065bd66e31569ea
PromiseKit: e1425568123ec844a944c93f2bcb29d511d39cf5
Protobuf: 1eb9700044745f00181c136ef21b8ff3ad5a0fd5
Quick: d17304d58d0d169dd0bd1c6e5c28e3318de32a1a
Reveal-SDK: 43206a57f575632fd304e85385cc259b5d359e32
RFKeyboardToolbar: c96a7d9458564d1fedc8ef6844b6c467934aade2
SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681
SimulatorStatusMagic: 0389a805fa8bd001e2977c4046730bdbd6642861
SimulatorStatusMagic: 28d4a9d1a500ac7cea0b2b5a43c1c6ddb40ba56c
SnapKit: a42d492c16e80209130a3379f73596c3454b7694
STRegex: eb1f4c2fe9e2f0265b8df8634774cd8cd8914018
SVGKit: 4055d9e809b5db8633755979cfb3b02dc5a8c20d
SVGKit: 8a2fc74258bdb2abb54d3b65f3dd68b0277a9c4d
SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
SwiftLint: 3207c1faa2240bf8973b191820a116113cd11073
SwiftyJSON: c29297daf073d2aa016295d5809cdd68045c39b3
Expand All @@ -351,6 +355,6 @@ SPEC CHECKSUMS:
VK-ios-sdk: 7fd48bc5aaa6b96c3197c1987eb6593f2ea67331
YandexMobileMetrica: f18374ee6977a4cd1d0a86298a0df4ad7baf4135

PODFILE CHECKSUM: 52cd710984518307922104224651ebbb14d720b1
PODFILE CHECKSUM: 683e363091151395c1e18aa31d3e1bca7843ec38

COCOAPODS: 1.5.3
Loading

0 comments on commit 2695cd5

Please sign in to comment.