Skip to content

Commit afafd73

Browse files
authored
Merge pull request #1130 from StepicOrg/release/1.213
Release 1.213
2 parents 02a0478 + fcc0fbd commit afafd73

File tree

30 files changed

+852
-71
lines changed

30 files changed

+852
-71
lines changed

Stepic.xcodeproj/project.pbxproj

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2692,6 +2692,7 @@
26922692
2C57B2A0240945B2008284F0 /* SubmissionsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubmissionsRepository.swift; sourceTree = "<group>"; };
26932693
2C580B802754FE7800BAEE60 /* WishlistEntriesPersistenceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WishlistEntriesPersistenceService.swift; sourceTree = "<group>"; };
26942694
2C5967EA23E7828800072800 /* SubmissionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubmissionTests.swift; sourceTree = "<group>"; };
2695+
2C5A92FE27D75A4C0086559D /* Model_course_update_purchase_button_behavior_v95.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Model_course_update_purchase_button_behavior_v95.xcdatamodel; sourceTree = "<group>"; };
26952696
2C5AB2B122F9BC78005E7AA0 /* Model_step_options_limits.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Model_step_options_limits.xcdatamodel; sourceTree = "<group>"; };
26962697
2C5B3812257280C6007BF21E /* AuthorsCourseListWidgetCoverView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorsCourseListWidgetCoverView.swift; sourceTree = "<group>"; };
26972698
2C5BE9DB233C0A100098EB2F /* katex */ = {isa = PBXFileReference; lastKnownFileType = folder; path = katex; sourceTree = "<group>"; };
@@ -13068,7 +13069,7 @@
1306813069
CODE_SIGN_IDENTITY = "iPhone Developer";
1306913070
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1307013071
CODE_SIGN_STYLE = Automatic;
13071-
CURRENT_PROJECT_VERSION = 419;
13072+
CURRENT_PROJECT_VERSION = 423;
1307213073
DEBUG_INFORMATION_FORMAT = dwarf;
1307313074
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1307413075
INFOPLIST_FILE = "StickerPackExtension/Info-Production.plist";
@@ -13093,7 +13094,7 @@
1309313094
CODE_SIGN_IDENTITY = "iPhone Developer";
1309413095
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1309513096
CODE_SIGN_STYLE = Automatic;
13096-
CURRENT_PROJECT_VERSION = 419;
13097+
CURRENT_PROJECT_VERSION = 423;
1309713098
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1309813099
INFOPLIST_FILE = "StickerPackExtension/Info-Production.plist";
1309913100
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
@@ -13235,7 +13236,7 @@
1323513236
CODE_SIGN_IDENTITY = "iPhone Developer";
1323613237
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1323713238
CODE_SIGN_STYLE = Automatic;
13238-
CURRENT_PROJECT_VERSION = 419;
13239+
CURRENT_PROJECT_VERSION = 423;
1323913240
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1324013241
ENABLE_BITCODE = YES;
1324113242
INFOPLIST_FILE = "Stepic/Info-Production.plist";
@@ -13265,7 +13266,7 @@
1326513266
CODE_SIGN_IDENTITY = "iPhone Developer";
1326613267
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1326713268
CODE_SIGN_STYLE = Automatic;
13268-
CURRENT_PROJECT_VERSION = 419;
13269+
CURRENT_PROJECT_VERSION = 423;
1326913270
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1327013271
ENABLE_BITCODE = YES;
1327113272
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
@@ -13356,7 +13357,7 @@
1335613357
CODE_SIGN_IDENTITY = "iPhone Developer";
1335713358
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1335813359
CODE_SIGN_STYLE = Automatic;
13359-
CURRENT_PROJECT_VERSION = 419;
13360+
CURRENT_PROJECT_VERSION = 423;
1336013361
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1336113362
ENABLE_BITCODE = YES;
1336213363
INFOPLIST_FILE = "Stepic/Info-Develop.plist";
@@ -13408,7 +13409,7 @@
1340813409
CODE_SIGN_IDENTITY = "iPhone Developer";
1340913410
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1341013411
CODE_SIGN_STYLE = Automatic;
13411-
CURRENT_PROJECT_VERSION = 419;
13412+
CURRENT_PROJECT_VERSION = 423;
1341213413
DEBUG_INFORMATION_FORMAT = dwarf;
1341313414
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1341413415
INFOPLIST_FILE = "StickerPackExtension/Info-Develop.plist";
@@ -13489,7 +13490,7 @@
1348913490
CODE_SIGN_IDENTITY = "iPhone Developer";
1349013491
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1349113492
CODE_SIGN_STYLE = Automatic;
13492-
CURRENT_PROJECT_VERSION = 419;
13493+
CURRENT_PROJECT_VERSION = 423;
1349313494
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1349413495
ENABLE_BITCODE = YES;
1349513496
INFOPLIST_FILE = "Stepic/Info-Develop.plist";
@@ -13537,7 +13538,7 @@
1353713538
CODE_SIGN_IDENTITY = "iPhone Developer";
1353813539
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1353913540
CODE_SIGN_STYLE = Automatic;
13540-
CURRENT_PROJECT_VERSION = 419;
13541+
CURRENT_PROJECT_VERSION = 423;
1354113542
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1354213543
INFOPLIST_FILE = "StickerPackExtension/Info-Develop.plist";
1354313544
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
@@ -14057,7 +14058,7 @@
1405714058
CODE_SIGN_IDENTITY = "iPhone Developer";
1405814059
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1405914060
CODE_SIGN_STYLE = Automatic;
14060-
CURRENT_PROJECT_VERSION = 419;
14061+
CURRENT_PROJECT_VERSION = 423;
1406114062
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1406214063
ENABLE_BITCODE = YES;
1406314064
INFOPLIST_FILE = "Stepic/Info-Release.plist";
@@ -14111,7 +14112,7 @@
1411114112
CODE_SIGN_IDENTITY = "iPhone Developer";
1411214113
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1411314114
CODE_SIGN_STYLE = Automatic;
14114-
CURRENT_PROJECT_VERSION = 419;
14115+
CURRENT_PROJECT_VERSION = 423;
1411514116
DEBUG_INFORMATION_FORMAT = dwarf;
1411614117
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1411714118
INFOPLIST_FILE = "StickerPackExtension/Info-Release.plist";
@@ -14193,7 +14194,7 @@
1419314194
CODE_SIGN_IDENTITY = "iPhone Developer";
1419414195
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1419514196
CODE_SIGN_STYLE = Automatic;
14196-
CURRENT_PROJECT_VERSION = 419;
14197+
CURRENT_PROJECT_VERSION = 423;
1419714198
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1419814199
ENABLE_BITCODE = YES;
1419914200
INFOPLIST_FILE = "Stepic/Info-Release.plist";
@@ -14241,7 +14242,7 @@
1424114242
CODE_SIGN_IDENTITY = "iPhone Developer";
1424214243
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1424314244
CODE_SIGN_STYLE = Automatic;
14244-
CURRENT_PROJECT_VERSION = 419;
14245+
CURRENT_PROJECT_VERSION = 423;
1424514246
DEVELOPMENT_TEAM = UJ4KC2QN7B;
1424614247
INFOPLIST_FILE = "StickerPackExtension/Info-Release.plist";
1424714248
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
@@ -14714,6 +14715,7 @@
1471414715
08D1EF6E1BB5618700BE84E6 /* Model.xcdatamodeld */ = {
1471514716
isa = XCVersionGroup;
1471614717
children = (
14718+
2C5A92FE27D75A4C0086559D /* Model_course_update_purchase_button_behavior_v95.xcdatamodel */,
1471714719
2C9E699127ABFFB40090FC83 /* Model_course_acquired_skills_v94.xcdatamodel */,
1471814720
2C97FFF9278CB90600EC7E74 /* Model_course_revenue_fixes_v93.xcdatamodel */,
1471914721
2CED149D2756D83E00BB013D /* Model_mobile_tiers_v92.xcdatamodel */,
@@ -14810,7 +14812,7 @@
1481014812
0802AC531C7222B200C4F3E6 /* Model_v2.xcdatamodel */,
1481114813
08D1EF6F1BB5618700BE84E6 /* Model.xcdatamodel */,
1481214814
);
14813-
currentVersion = 2C9E699127ABFFB40090FC83 /* Model_course_acquired_skills_v94.xcdatamodel */;
14815+
currentVersion = 2C5A92FE27D75A4C0086559D /* Model_course_update_purchase_button_behavior_v95.xcdatamodel */;
1481414816
path = Model.xcdatamodeld;
1481514817
sourceTree = "<group>";
1481614818
versionGroupType = wrapper.xcdatamodel;

Stepic/Info-Develop.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<key>CFBundlePackageType</key>
1818
<string>APPL</string>
1919
<key>CFBundleShortVersionString</key>
20-
<string>1.212-develop</string>
20+
<string>1.213-develop</string>
2121
<key>CFBundleSignature</key>
2222
<string>????</string>
2323
<key>CFBundleURLTypes</key>
@@ -62,7 +62,7 @@
6262
</dict>
6363
</array>
6464
<key>CFBundleVersion</key>
65-
<string>419</string>
65+
<string>423</string>
6666
<key>FacebookAppID</key>
6767
<string>171127739724012</string>
6868
<key>FacebookDisplayName</key>

Stepic/Info-Production.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<key>CFBundlePackageType</key>
1818
<string>APPL</string>
1919
<key>CFBundleShortVersionString</key>
20-
<string>1.212</string>
20+
<string>1.213</string>
2121
<key>CFBundleSignature</key>
2222
<string>????</string>
2323
<key>CFBundleURLTypes</key>
@@ -62,7 +62,7 @@
6262
</dict>
6363
</array>
6464
<key>CFBundleVersion</key>
65-
<string>419</string>
65+
<string>423</string>
6666
<key>FacebookAppID</key>
6767
<string>171127739724012</string>
6868
<key>FacebookDisplayName</key>

Stepic/Info-Release.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<key>CFBundlePackageType</key>
1818
<string>APPL</string>
1919
<key>CFBundleShortVersionString</key>
20-
<string>1.212-release</string>
20+
<string>1.213-release</string>
2121
<key>CFBundleSignature</key>
2222
<string>????</string>
2323
<key>CFBundleURLTypes</key>
@@ -62,7 +62,7 @@
6262
</dict>
6363
</array>
6464
<key>CFBundleVersion</key>
65-
<string>419</string>
65+
<string>423</string>
6666
<key>FacebookAppID</key>
6767
<string>171127739724012</string>
6868
<key>FacebookDisplayName</key>

Stepic/Legacy/Controllers/PersonalDeadlines/Service/PersonalDeadlinesService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ final class PersonalDeadlinesService: PersonalDeadlinesServiceProtocol {
3838
}
3939

4040
func canAddDeadlines(in course: Course) -> Bool {
41-
course.sectionDeadlines == nil && course.scheduleType == "self_paced"
41+
course.sectionDeadlines == nil && course.scheduleType == .selfPaced
4242
}
4343

4444
func hasDeadlines(in course: Course) -> Bool {

Stepic/Legacy/Model/Entities/Course/Course+CoreDataProperties.swift

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ extension Course {
1313
@NSManaged var managedFeatured: NSNumber?
1414
@NSManaged var managedPublic: NSNumber?
1515
@NSManaged var managedIsProctored: NSNumber?
16+
@NSManaged var managedIsEnabled: NSNumber
1617
@NSManaged var managedIsFavorite: NSNumber?
1718
@NSManaged var managedIsArchived: NSNumber?
1819
@NSManaged var managedIsInWishlist: NSNumber?
@@ -64,6 +65,8 @@ extension Course {
6465

6566
@NSManaged var managedCanViewRevenue: NSNumber?
6667
@NSManaged var managedCanCreateAnnouncements: NSNumber
68+
@NSManaged var managedCanEditCourse: NSNumber
69+
@NSManaged var managedCanBeBought: NSNumber
6770

6871
// MARK: Relationships
6972
@NSManaged var managedAuthors: NSOrderedSet?
@@ -153,12 +156,12 @@ extension Course {
153156
}
154157
}
155158

156-
var scheduleType: String? {
157-
set(value) {
158-
self.managedScheduleType = value
159-
}
159+
var scheduleTypeString: String? {
160160
get {
161-
managedScheduleType
161+
self.managedScheduleType
162+
}
163+
set {
164+
self.managedScheduleType = newValue
162165
}
163166
}
164167

@@ -270,6 +273,15 @@ extension Course {
270273
}
271274
}
272275

276+
var isEnabled: Bool {
277+
get {
278+
self.managedIsEnabled.boolValue
279+
}
280+
set {
281+
self.managedIsEnabled = NSNumber(value: newValue)
282+
}
283+
}
284+
273285
var isFavorite: Bool {
274286
get {
275287
self.managedIsFavorite?.boolValue ?? false
@@ -569,6 +581,24 @@ extension Course {
569581
}
570582
}
571583

584+
var canEditCourse: Bool {
585+
get {
586+
self.managedCanEditCourse.boolValue
587+
}
588+
set {
589+
self.managedCanEditCourse = NSNumber(value: newValue)
590+
}
591+
}
592+
593+
var canBeBought: Bool {
594+
get {
595+
self.managedCanBeBought.boolValue
596+
}
597+
set {
598+
self.managedCanBeBought = NSNumber(value: newValue)
599+
}
600+
}
601+
572602
var progress: Progress? {
573603
get {
574604
managedProgress

Stepic/Legacy/Model/Entities/Course/Course.swift

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ import SwiftyJSON
66
final class Course: NSManagedObject, ManagedObject, IDFetchable {
77
typealias IdType = Int
88

9+
var scheduleType: ScheduleType? {
10+
if let scheduleTypeString = self.scheduleTypeString {
11+
return ScheduleType(rawValue: scheduleTypeString)
12+
}
13+
return nil
14+
}
15+
916
var sectionDeadlines: [SectionDeadline]? {
1017
(PersonalDeadlineLocalStorageManager().getRecord(for: self)?.data as? DeadlineStorageRecordData)?.deadlines
1118
}
@@ -56,8 +63,9 @@ final class Course: NSManagedObject, ManagedObject, IDFetchable {
5663

5764
var canContinue: Bool {
5865
self.totalUnits > 0
59-
&& self.scheduleType != "ended"
60-
&& self.scheduleType != "upcoming"
66+
&& self.scheduleType != .upcoming
67+
&& self.scheduleType != .ended
68+
&& (self.isEnabled || !self.canEditCourse)
6169
}
6270

6371
var canWriteReview: Bool {
@@ -112,6 +120,7 @@ final class Course: NSManagedObject, ManagedObject, IDFetchable {
112120
self.isArchived = json[JSONKey.isArchived.rawValue].boolValue
113121
self.isInWishlist = json[JSONKey.isInWishlist.rawValue].boolValue
114122
self.isProctored = json[JSONKey.isProctored.rawValue].boolValue
123+
self.isEnabled = json[JSONKey.isEnabled.rawValue].bool ?? true
115124
self.readiness = json[JSONKey.readiness.rawValue].float
116125

117126
self.summary = json[JSONKey.summary.rawValue].stringValue
@@ -123,7 +132,7 @@ final class Course: NSManagedObject, ManagedObject, IDFetchable {
123132
self.slug = json[JSONKey.slug.rawValue].string
124133
self.progressID = json[JSONKey.progress.rawValue].string
125134
self.lastStepID = json[JSONKey.lastStep.rawValue].string
126-
self.scheduleType = json[JSONKey.scheduleType.rawValue].string
135+
self.scheduleTypeString = json[JSONKey.scheduleType.rawValue].string
127136
self.learnersCount = json[JSONKey.learnersCount.rawValue].int
128137
self.totalUnits = json[JSONKey.totalUnits.rawValue].intValue
129138
self.reviewSummaryID = json[JSONKey.reviewSummary.rawValue].int
@@ -163,9 +172,14 @@ final class Course: NSManagedObject, ManagedObject, IDFetchable {
163172
self.canViewRevenue =
164173
actionsDictionary[JSONKey.viewRevenue.rawValue]?.dictionary?[JSONKey.enabled.rawValue]?.bool ?? false
165174
self.canCreateAnnouncements = actionsDictionary[JSONKey.createAnnouncements.rawValue]?.string != nil
175+
self.canEditCourse = actionsDictionary[JSONKey.editCourse.rawValue]?.string != nil
176+
self.canBeBought =
177+
actionsDictionary[JSONKey.canBeBought.rawValue]?.dictionary?[JSONKey.enabled.rawValue]?.bool ?? false
166178
} else {
167179
self.canViewRevenue = false
168180
self.canCreateAnnouncements = false
181+
self.canEditCourse = false
182+
self.canBeBought = false
169183
}
170184
}
171185

@@ -192,6 +206,12 @@ final class Course: NSManagedObject, ManagedObject, IDFetchable {
192206

193207
// MARK: Inner Types
194208

209+
enum ScheduleType: String {
210+
case ended
211+
case upcoming
212+
case selfPaced = "self_paced"
213+
}
214+
195215
enum JSONKey: String {
196216
case id
197217
case title
@@ -240,13 +260,16 @@ final class Course: NSManagedObject, ManagedObject, IDFetchable {
240260
case previewLesson = "preview_lesson"
241261
case previewUnit = "preview_unit"
242262
case isProctored = "is_proctored"
263+
case isEnabled = "is_enabled"
264+
case canBeBought = "can_be_bought"
243265
case defaultPromoCodeName = "default_promo_code_name"
244266
case defaultPromoCodePrice = "default_promo_code_price"
245267
case defaultPromoCodeDiscount = "default_promo_code_discount"
246268
case defaultPromoCodeExpireDate = "default_promo_code_expire_date"
247269
case actions
248270
case viewRevenue = "view_revenue"
249271
case enabled
272+
case editCourse = "edit_course"
250273
case createAnnouncements = "create_announcements"
251274
case announcements
252275
case acquiredSkills = "acquired_skills"

Stepic/Legacy/Model/Model.xcdatamodeld/.xccurrentversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
<plist version="1.0">
44
<dict>
55
<key>_XCCurrentVersionName</key>
6-
<string>Model_course_acquired_skills_v94.xcdatamodel</string>
6+
<string>Model_course_update_purchase_button_behavior_v95.xcdatamodel</string>
77
</dict>
88
</plist>

Stepic/Legacy/Model/Model.xcdatamodeld/Model_course_acquired_skills_v94.xcdatamodel/contents

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="19574" systemVersion="21D49" minimumToolsVersion="Xcode 7.0" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
2+
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="19574" systemVersion="21D62" minimumToolsVersion="Xcode 7.0" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
33
<entity name="Announcement" representedClassName=".Announcement" syncable="YES">
44
<attribute name="managedClickCount" optional="YES" attributeType="Integer 64" usesScalarValueType="NO" syncable="YES"/>
55
<attribute name="managedCourseId" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>

0 commit comments

Comments
 (0)