git.iko.soy/dashared/GDproject
on master help sign in
added new API method for publishing posts. added icons on tab bar. some slight modifications
commit8d2888278847283840c9d1eeaf199d7e0b5a1367 authorDarya Rednikina <rednikina.com@yandex.ru> dateFri 1 Mar 2019, 22:53 (8 years ago) parentb504119
15 files changed+148−55
GDproject/Base.lproj/Main.storyboard+6−2 GDproject/Controller/ News and channels/NewPostViewController.swift+2−13 GDproject/Simple model/Model.swift+10−40 GDproject/Supporting files/Assets.xcassets/1.imageset/1.pdf GDproject/Supporting files/Assets.xcassets/1.imageset/Contents.json+25 GDproject/Supporting files/Assets.xcassets/2.imageset/2.pdf GDproject/Supporting files/Assets.xcassets/2.imageset/Contents.json+21 GDproject/Supporting files/Assets.xcassets/3.imageset/3.pdf GDproject/Supporting files/Assets.xcassets/3.imageset/Contents.json+21 GDproject/Supporting files/Assets.xcassets/4.imageset/4.pdf GDproject/Supporting files/Assets.xcassets/4.imageset/Contents.json+21 GDproject/Supporting files/Assets.xcassets/5.imageset/5.pdf GDproject/Supporting files/Assets.xcassets/5.imageset/Contents.json+21 GDproject/Supporting files/Assets.xcassets/share.imageset/Contents.json+21 GDproject/Supporting files/Assets.xcassets/share.imageset/share.png
GDproject/Base.lproj/Main.storyboard+6−2
@@ -414,7 +414,7 @@
414414 <scene sceneID="RSd-UJ-34B">
415415 <objects>
416416 <navigationController storyboardIdentifier="navChannels" automaticallyAdjustsScrollViewInsets="NO" id="NuV-ZG-ld2" sceneMemberID="viewController">
417− <tabBarItem key="tabBarItem" title="Posts" id="dH2-sL-YsR"/>
417+ <tabBarItem key="tabBarItem" title="Posts" image="5" selectedImage="5" id="dH2-sL-YsR"/>
418418 <toolbarItems/>
419419 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" largeTitles="YES" id="6qB-3A-tuL">
420420 <rect key="frame" x="0.0" y="20" width="375" height="96"/>
@@ -453,7 +453,7 @@
453453 <scene sceneID="dJj-Hp-Wa9">
454454 <objects>
455455 <navigationController storyboardIdentifier="navPosts" automaticallyAdjustsScrollViewInsets="NO" id="tae-5q-wvT" sceneMemberID="viewController">
456− <tabBarItem key="tabBarItem" title="Profile" id="lYy-LQ-AcR"/>
456+ <tabBarItem key="tabBarItem" title="Profile" image="1" selectedImage="1" id="lYy-LQ-AcR"/>
457457 <toolbarItems/>
458458 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" largeTitles="YES" id="q3a-ph-c8V">
459459 <rect key="frame" x="0.0" y="20" width="375" height="96"/>
@@ -501,4 +501,8 @@
501501 <point key="canvasLocation" x="-466" y="641"/>
502502 </scene>
503503 </scenes>
504+ <resources>
505+ <image name="1" width="30" height="30"/>
506+ <image name="5" width="30" height="30"/>
507+ </resources>
504508</document>
GDproject/Controller/ News and channels/NewPostViewController.swift+2−13
@@ -46,24 +46,13 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
4646 override func viewDidLoad()
4747 {
4848 super.viewDidLoad()
49− Model.createDraft { [weak self] (int) in
50− self?.indexOfPost = int
51− }
5249 //createTimerForUpdates()
5350
5451 setUpMD()
5552 setUpTextView()
5653 setUpAccessoryView()
5754 }
58−
59− func createTimerForUpdates(){
60− // timer for update
61− let t = RepeatingTimer(timeInterval: 15)
62− t.eventHandler = { [unowned self] in
63− Model.update(post: Model.Posts(body: [Model.Attachments(markdown: self.textView.text)], authorId: 42, id: self.indexOfPost))
64− }
65− t.resume()
66− }
55+
6756
6857 override func viewWillAppear(_ animated: Bool) {
6958 super.viewWillAppear(animated)
@@ -204,7 +193,7 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
204193 var indexOfPost = 0
205194 // MARK:- new post
206195 @objc func newPost(){
207− Model.update(post: Model.Posts(body: [Model.Attachments(markdown: textView.text)], authorId: 42, id: indexOfPost))
196+ Model.createAndPublish(string: textView.text!)
208197 // adding row to uiTableView after adding new post
209198 // myProtocol?.addPost(post: p)
210199 moveBackToParentVC()
GDproject/Simple model/Model.swift+10−40
@@ -20,6 +20,7 @@ class Model{
2020 static let urlForUpdate = URL(string:"\(baseUrl)/drafts/update")!
2121 static let urlForPostsForUser = URL(string:"\(baseUrl)/posts/forUser")!
2222 static let urlForUsers = URL(string:"\(baseUrl)/users")!
23+ static let createAndPublishURL = URL(string:"\(baseUrl)/drafts/createAndPublish")!
2324
2425 struct Posts: Codable {
2526 var body: [Attachments]
@@ -148,46 +149,16 @@ class Model{
148149 }
149150 }
150151
151− static var seeMe: Int = 0 {
152− didSet{
153− publish()
154− }
155− }
156−
157− static func publish(){
158− let jsonUpd = "\(seeMe)"
159− var request = URLRequest(url: urlForPublish)
160−
161− request.httpMethod = "POST"
162−
163− // insert json data to the request
164− request.httpBody = jsonUpd.data(using: .utf8)
165− request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
166− AF.request(request).response {
167− (response) in
168−
169− if response.response?.statusCode == 204 {
170− print("successfuly published \(jsonUpd)")
171− }
172− }
173− }
174152
175− static func update(post: Posts){
176− let transformed = post.body.reduce("") { (res, att) -> String in
177− res + att.markdown
178− }
179−
153+ static func createAndPublish(string: String){
180154 let jsonUpd = """
181− {
182− "body": [
183− {
184− "markdown": "\(transformed)"
185− }
186− ],
187− "id": \(post.id)
188− }
155+ [
156+ {
157+ "markdown": "\(string)"
158+ }
159+ ]
189160 """
190− var request = URLRequest(url: urlForUpdate)
161+ var request = URLRequest(url: createAndPublishURL)
191162
192163 request.httpMethod = "POST"
193164
@@ -198,10 +169,9 @@ class Model{
198169 (response) in
199170
200171 if response.response?.statusCode == 204 {
201− print("successfuly updated \(post.id) with \(jsonUpd)")
202− seeMe = post.id
172+ print("post created")
203173 } else {
204− print(response.response?.statusCode)
174+ print("failure in creating and publishing post")
205175 }
206176 }
207177 }
GDproject/Supporting files/Assets.xcassets/1.imageset/1.pdfnew file

Binary file not shown.

GDproject/Supporting files/Assets.xcassets/1.imageset/Contents.jsonnew file+25
@@ -0,0 +1,25 @@
1+{
2+ "images" : [
3+ {
4+ "idiom" : "universal",
5+ "filename" : "1.pdf",
6+ "scale" : "1x"
7+ },
8+ {
9+ "idiom" : "universal",
10+ "scale" : "2x"
11+ },
12+ {
13+ "idiom" : "universal",
14+ "scale" : "3x"
15+ }
16+ ],
17+ "info" : {
18+ "version" : 1,
19+ "author" : "xcode"
20+ },
21+ "properties" : {
22+ "template-rendering-intent" : "template",
23+ "preserves-vector-representation" : true
24+ }
25+}
GDproject/Supporting files/Assets.xcassets/2.imageset/2.pdfnew file

Binary file not shown.

GDproject/Supporting files/Assets.xcassets/2.imageset/Contents.jsonnew file+21
@@ -0,0 +1,21 @@
1+{
2+ "images" : [
3+ {
4+ "idiom" : "universal",
5+ "filename" : "2.pdf",
6+ "scale" : "1x"
7+ },
8+ {
9+ "idiom" : "universal",
10+ "scale" : "2x"
11+ },
12+ {
13+ "idiom" : "universal",
14+ "scale" : "3x"
15+ }
16+ ],
17+ "info" : {
18+ "version" : 1,
19+ "author" : "xcode"
20+ }
21+}
GDproject/Supporting files/Assets.xcassets/3.imageset/3.pdfnew file

Binary file not shown.

GDproject/Supporting files/Assets.xcassets/3.imageset/Contents.jsonnew file+21
@@ -0,0 +1,21 @@
1+{
2+ "images" : [
3+ {
4+ "idiom" : "universal",
5+ "filename" : "3.pdf",
6+ "scale" : "1x"
7+ },
8+ {
9+ "idiom" : "universal",
10+ "scale" : "2x"
11+ },
12+ {
13+ "idiom" : "universal",
14+ "scale" : "3x"
15+ }
16+ ],
17+ "info" : {
18+ "version" : 1,
19+ "author" : "xcode"
20+ }
21+}
GDproject/Supporting files/Assets.xcassets/4.imageset/4.pdfnew file

Binary file not shown.

GDproject/Supporting files/Assets.xcassets/4.imageset/Contents.jsonnew file+21
@@ -0,0 +1,21 @@
1+{
2+ "images" : [
3+ {
4+ "idiom" : "universal",
5+ "filename" : "4.pdf",
6+ "scale" : "1x"
7+ },
8+ {
9+ "idiom" : "universal",
10+ "scale" : "2x"
11+ },
12+ {
13+ "idiom" : "universal",
14+ "scale" : "3x"
15+ }
16+ ],
17+ "info" : {
18+ "version" : 1,
19+ "author" : "xcode"
20+ }
21+}
GDproject/Supporting files/Assets.xcassets/5.imageset/5.pdfnew file

Binary file not shown.

GDproject/Supporting files/Assets.xcassets/5.imageset/Contents.jsonnew file+21
@@ -0,0 +1,21 @@
1+{
2+ "images" : [
3+ {
4+ "idiom" : "universal",
5+ "filename" : "5.pdf",
6+ "scale" : "1x"
7+ },
8+ {
9+ "idiom" : "universal",
10+ "scale" : "2x"
11+ },
12+ {
13+ "idiom" : "universal",
14+ "scale" : "3x"
15+ }
16+ ],
17+ "info" : {
18+ "version" : 1,
19+ "author" : "xcode"
20+ }
21+}
GDproject/Supporting files/Assets.xcassets/share.imageset/Contents.jsonnew file+21
@@ -0,0 +1,21 @@
1+{
2+ "images" : [
3+ {
4+ "idiom" : "universal",
5+ "filename" : "share.png",
6+ "scale" : "1x"
7+ },
8+ {
9+ "idiom" : "universal",
10+ "scale" : "2x"
11+ },
12+ {
13+ "idiom" : "universal",
14+ "scale" : "3x"
15+ }
16+ ],
17+ "info" : {
18+ "version" : 1,
19+ "author" : "xcode"
20+ }
21+}
GDproject/Supporting files/Assets.xcassets/share.imageset/share.pngnew file

Binary file not shown.