From d91ce89670b7c431a98aac703cdeab6c1c0722e3 Mon Sep 17 00:00:00 2001 From: aj Date: Tue, 18 Feb 2020 01:44:30 +0000 Subject: [PATCH] added alamofire, redoing network layer. added system icons and list headers --- Music Tools.xcodeproj/project.pbxproj | 41 +++++++-- .../contents.xcworkspacedata | 2 +- .../xcshareddata/swiftpm/Package.resolved | 16 ++++ .../Base.lproj/LaunchScreen.storyboard | 9 ++ .../Logo.imageset/Contents.json | 21 +++++ .../Logo.imageset/MusicToolsIcon1024.png | Bin 0 -> 20389 bytes .../first.imageset/Contents.json | 12 --- .../Assets.xcassets/first.imageset/first.pdf | Bin 2465 -> 0 bytes .../second.imageset/Contents.json | 12 --- .../second.imageset/second.pdf | Bin 2423 -> 0 bytes Music Tools/Network/NetTypes.swift | 33 -------- Music Tools/Network/Network.swift | 80 ++++++++++++++++++ Music Tools/Views/LoginScreen.swift | 43 ++++++++++ Music Tools/Views/PlaylistList.swift | 4 +- Music Tools/Views/PlaylistRow.swift | 2 +- Music Tools/Views/PlaylistView.swift | 2 +- Music Tools/Views/RootView.swift | 55 ++++++++---- Music ToolsTests/Music_ToolsTests.swift | 2 +- Music ToolsUITests/Music_ToolsUITests.swift | 2 +- 19 files changed, 252 insertions(+), 84 deletions(-) create mode 100644 Music Tools.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Music Tools/Assets.xcassets/Logo.imageset/Contents.json create mode 100644 Music Tools/Assets.xcassets/Logo.imageset/MusicToolsIcon1024.png delete mode 100644 Music Tools/Assets.xcassets/first.imageset/Contents.json delete mode 100644 Music Tools/Assets.xcassets/first.imageset/first.pdf delete mode 100644 Music Tools/Assets.xcassets/second.imageset/Contents.json delete mode 100644 Music Tools/Assets.xcassets/second.imageset/second.pdf delete mode 100644 Music Tools/Network/NetTypes.swift create mode 100644 Music Tools/Network/Network.swift create mode 100644 Music Tools/Views/LoginScreen.swift diff --git a/Music Tools.xcodeproj/project.pbxproj b/Music Tools.xcodeproj/project.pbxproj index 3b2327b..41c000a 100644 --- a/Music Tools.xcodeproj/project.pbxproj +++ b/Music Tools.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -11,7 +11,9 @@ E98254C223F9FFF90056D9D3 /* PlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98254C123F9FFF90056D9D3 /* PlaylistView.swift */; }; E98254C823FA25D20056D9D3 /* PlaylistList.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98254C723FA25D20056D9D3 /* PlaylistList.swift */; }; E98254CA23FA26600056D9D3 /* PlaylistRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98254C923FA26600056D9D3 /* PlaylistRow.swift */; }; - E98254CC23FA2D0A0056D9D3 /* NetTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98254CB23FA2D0A0056D9D3 /* NetTypes.swift */; }; + E98254D023FB00B60056D9D3 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98254CF23FB00B60056D9D3 /* LoginScreen.swift */; }; + E98254D923FB53780056D9D3 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = E98254D823FB53780056D9D3 /* Alamofire */; }; + E98254DB23FB64740056D9D3 /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98254DA23FB64740056D9D3 /* Network.swift */; }; E9EA690B23F9A5430012C3E8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA690A23F9A5430012C3E8 /* AppDelegate.swift */; }; E9EA690D23F9A5430012C3E8 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA690C23F9A5430012C3E8 /* SceneDelegate.swift */; }; E9EA690F23F9A5430012C3E8 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA690E23F9A5430012C3E8 /* RootView.swift */; }; @@ -44,7 +46,8 @@ E98254C123F9FFF90056D9D3 /* PlaylistView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaylistView.swift; sourceTree = ""; }; E98254C723FA25D20056D9D3 /* PlaylistList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaylistList.swift; sourceTree = ""; }; E98254C923FA26600056D9D3 /* PlaylistRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaylistRow.swift; sourceTree = ""; }; - E98254CB23FA2D0A0056D9D3 /* NetTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetTypes.swift; sourceTree = ""; }; + E98254CF23FB00B60056D9D3 /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginScreen.swift; sourceTree = ""; }; + E98254DA23FB64740056D9D3 /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; E9EA690723F9A5430012C3E8 /* Music Tools.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Music Tools.app"; sourceTree = BUILT_PRODUCTS_DIR; }; E9EA690A23F9A5430012C3E8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; E9EA690C23F9A5430012C3E8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -66,6 +69,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + E98254D923FB53780056D9D3 /* Alamofire in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -97,7 +101,7 @@ E98254BF23F9BE040056D9D3 /* Network */ = { isa = PBXGroup; children = ( - E98254CB23FA2D0A0056D9D3 /* NetTypes.swift */, + E98254DA23FB64740056D9D3 /* Network.swift */, ); path = Network; sourceTree = ""; @@ -109,6 +113,7 @@ E98254C123F9FFF90056D9D3 /* PlaylistView.swift */, E98254C723FA25D20056D9D3 /* PlaylistList.swift */, E98254C923FA26600056D9D3 /* PlaylistRow.swift */, + E98254CF23FB00B60056D9D3 /* LoginScreen.swift */, ); path = Views; sourceTree = ""; @@ -199,6 +204,9 @@ dependencies = ( ); name = "Music Tools"; + packageProductDependencies = ( + E98254D823FB53780056D9D3 /* Alamofire */, + ); productName = "Music Tools"; productReference = E9EA690723F9A5430012C3E8 /* Music Tools.app */; productType = "com.apple.product-type.application"; @@ -271,6 +279,9 @@ Base, ); mainGroup = E9EA68FE23F9A5430012C3E8; + packageReferences = ( + E98254D723FB53770056D9D3 /* XCRemoteSwiftPackageReference "alamofire" */, + ); productRefGroup = E9EA690823F9A5430012C3E8 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -314,14 +325,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E98254CC23FA2D0A0056D9D3 /* NetTypes.swift in Sources */, E98254CA23FA26600056D9D3 /* PlaylistRow.swift in Sources */, E9EA690B23F9A5430012C3E8 /* AppDelegate.swift in Sources */, E9EA690D23F9A5430012C3E8 /* SceneDelegate.swift in Sources */, + E98254DB23FB64740056D9D3 /* Network.swift in Sources */, E98254C823FA25D20056D9D3 /* PlaylistList.swift in Sources */, E9EA690F23F9A5430012C3E8 /* RootView.swift in Sources */, E98254BD23F9B7A90056D9D3 /* Playlist.swift in Sources */, E98254C223F9FFF90056D9D3 /* PlaylistView.swift in Sources */, + E98254D023FB00B60056D9D3 /* LoginScreen.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -646,6 +658,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + E98254D723FB53770056D9D3 /* XCRemoteSwiftPackageReference "alamofire" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/alamofire/alamofire.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + E98254D823FB53780056D9D3 /* Alamofire */ = { + isa = XCSwiftPackageProductDependency; + package = E98254D723FB53770056D9D3 /* XCRemoteSwiftPackageReference "alamofire" */; + productName = Alamofire; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = E9EA68FF23F9A5430012C3E8 /* Project object */; } diff --git a/Music Tools.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Music Tools.xcodeproj/project.xcworkspace/contents.xcworkspacedata index b064cd0..919434a 100644 --- a/Music Tools.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Music Tools.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Music Tools.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Music Tools.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..2b10548 --- /dev/null +++ b/Music Tools.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/alamofire/alamofire.git", + "state": { + "branch": null, + "revision": "0c8cb78d05b6d067ee331c05058ff4dedcb45ffa", + "version": "5.0.0" + } + } + ] + }, + "version": 1 +} diff --git a/Music Tools/Application/Base.lproj/LaunchScreen.storyboard b/Music Tools/Application/Base.lproj/LaunchScreen.storyboard index 125fd91..cb7f638 100644 --- a/Music Tools/Application/Base.lproj/LaunchScreen.storyboard +++ b/Music Tools/Application/Base.lproj/LaunchScreen.storyboard @@ -14,6 +14,12 @@ + + + + + + @@ -23,4 +29,7 @@ + + + diff --git a/Music Tools/Assets.xcassets/Logo.imageset/Contents.json b/Music Tools/Assets.xcassets/Logo.imageset/Contents.json new file mode 100644 index 0000000..3c5822e --- /dev/null +++ b/Music Tools/Assets.xcassets/Logo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "MusicToolsIcon1024.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Music Tools/Assets.xcassets/Logo.imageset/MusicToolsIcon1024.png b/Music Tools/Assets.xcassets/Logo.imageset/MusicToolsIcon1024.png new file mode 100644 index 0000000000000000000000000000000000000000..326d083fc785928d4b618f23c515cbff504b3215 GIT binary patch literal 20389 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 KlJdv)WB&s#J))uj literal 0 HcmV?d00001 diff --git a/Music Tools/Assets.xcassets/first.imageset/Contents.json b/Music Tools/Assets.xcassets/first.imageset/Contents.json deleted file mode 100644 index 33a7451..0000000 --- a/Music Tools/Assets.xcassets/first.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "first.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Music Tools/Assets.xcassets/first.imageset/first.pdf b/Music Tools/Assets.xcassets/first.imageset/first.pdf deleted file mode 100644 index 47d911dea647d55983671ead4d08b6f6b3600715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2465 zcmai03se(l7FLvisY+L#f-EBsK`11Xkc1=%MIujmB|xQ!>5vQ%APFP`Mlf5nSPOKE z2-^C>7DZkM!J;Da5{kfrC?Kvp3J41-3shFXvhuJqKo*oer*r0H{{P-P_x0cTzLzjD!bE z0qT;#Q7l4Gy%fMoXJaKT`@{5#R(MOqJPwQifv8iK6A%Ot9L14h2`38T!2s4PM=1!< zmL06}VYAA|ay#jZRs>HpA%X+eQW4rufWU%d1w5GTy!X#LeZsF_+~ccZmn3Fi)v^Z; zIG;?uU*yLLEYs61tjD>gXOFvSWsh{48xJvPNqKrIJtMdCz2cA2aC7TF?b@K`V!Lw- zE;zpH&ApqhoRjAHt}gK}>(qAc8dvrkD31*`<5<%C(&4_LqhQ3-GOf8~n^leG?+-@@^pjPa$J2gW@O)!b9hdTJ zTauyIJ&~rqeEZC1p9dWgx7{_WRc2=drMO=wcT7B{Zd58z`d)r_36r4V<6PGkCjpGfbnVMtm@;b}F!T?)Qav$_y7H5T;Mf!T}M zWxP9TNqrV?e5;b|pWd3^u2KAatk&3aDB@0 zZBaQNdCZ2#fblzYZnRCCjQ-GQWb-s8bX&<)?SxnUGdDYVFVk`xIf7@g3~$DX`H71_;r5OSZz1p`$_8y_9 z{;MJJ+n=>7Ewg;GnGHoz)&ID0z@F2!e$F7cWQ?d6s(!VY)_Gw})xCyMvsD={5i&H* zAIr_ACo8;Se6<*!-mm9Am79Iz^RVlc?%S5sg|E*SyIV{dd9{Mpf#d3cih5WKt=%ps zBEo)bt8EjmeCFYJRYU|b7d`p+-V|X2wOCYtyLP6t=!WH-kgdf0A};ytPfZiCwVPx{ z`g;zpe{8a4RQxQUwVU02<4X3w|9h;}XjhGWquqn{vVqq8g{*}BQF9=ybe_TM*!M=rFs1pN)yzctIXAoicsCe6>fit>wgZ#vp^hZOY0`J`rx zwdSK?GwR_xm9;5XjH|vf{O+Yg-)z;s*xt>;-vU`D-_SK<=~4eEVQkV~57{vyH6ebu>DqwE~Mx_A31Lg~$ zy`i52ew?GEluE%AN>ju*5z~dx2QQLP-G+E>o|En2+s&<^4*d zWD+<8PXs_Jp7_5Dpi(Gg3J?M;%Rn0{dcxQRh!ip+iHJ_e`!bM1MGxwI8Iedr+x>wI zq@&04fsADHfBccq^gpm8Q_u-~Uj|Z$YwSR(^_mzUb!}Xb2Cj`uqphg}v_Y%?Fs=;= zWq3s{hy)Tu!ji@RJsd$C+G{F6V2j1*Xk+7xo|LO7M2yb)(wc=%x-AclP9pLsbTF7m tf?*P!2EjJu5MD57P32Q4pdJ3tO_shCDT2=K;$ebx8ymcd$v!V9{2$sQiO>K5 diff --git a/Music Tools/Assets.xcassets/second.imageset/Contents.json b/Music Tools/Assets.xcassets/second.imageset/Contents.json deleted file mode 100644 index 03bd9c9..0000000 --- a/Music Tools/Assets.xcassets/second.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "second.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Music Tools/Assets.xcassets/second.imageset/second.pdf b/Music Tools/Assets.xcassets/second.imageset/second.pdf deleted file mode 100644 index 401614e288b4b160471c2776bed6f09762af3e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2423 zcmai02~-nz8dqq7rWU#)x2z)&iMWtV?gK$2a)?|BP!TbkV}J-Gl1wmy+3G9S0=uOY zwCjai6uBOPMMdNiN`VDYKwLQr2#W^`R93*Ua=0^)EGYY4=grIf|KIohziYnv{elnR zdN_hk6db<(+3RPcxs!iut8c(j0TLh=9mY931H^rhEE0|aXo!dh5Iv+ZFr+}9F+v#P zLSnfD0$f~hN>~92V{z)WJA&2)5rW!|I?;o?oI*%zejJiuY>hFLQwKlAa9O+PnPh#% zJp~JAfs-De6u@;{cREMs}D-sGib_4>50m8_|Uj-zC0m@Qx zJV+^5Da4Qxpf3sBtKZs<_aI$Cb1T+h<->yL^rfiGNelYkqgC3#SqVP_iy*_RPcbjH)xYf zvYdC-)D_t8c{=5%;$VJQxs_#61J*kuXMC?|&PbPo-7uSxoNr~&J94|gKk+03JGXXM zx4w~=^VUzWqQveu_ilRgPdgNNdnLZCH`=;w91}cP5ihdm*B_jI+rk=Pz2Lk!)XUu| zkls3P5&YHJ!t0kF+MUVBHOAx)a zy|JxHNd37z*~b5#%*0w_F|#4?erNP;pG`Fevoq2%?9Y>%Cmzv1(ks;aPIGaiy1mhU zr{7lB^Mem&`QK{b{uiDC zLD8muY(FNk{YdV|zO#o_VB%);8|~Bh(Z4p?GM}g-HN2;q7~YNl-lD~HZ$taYw$Fzbn6c?c5eo=@`i>()el#qwB)hI-gp0 ztsw@dh-I5NJkk)RCoBC`L8ffKfY)=oG=#4LA9TO6eA}9~@a6dupB+=S{%s&NY}^0GY`hAqod)uxXHitrN%bWOJohV>t?!&Z#d4y^7J@=Oh`HV zee**4j>xRUd)|D0^I-B#<`m1-5PO{)!v(q?ecFYqr_8Q{+z7#n0uFbq%_?hZ-Ck(6NRn=vDS7Nb1Xxx_)9`!i- zGR>av*PJ+P_AGO*a_$FbtCCISg5PK44p&W#t$)+HVcxpR9LAL%_Pv$p`0tO*sYZD0 zCG3-ipr4WoVbjpw%Nf^r^rnWcDcjumgBPEjO;NM6QtZ8wU#0rjHx5zs%CahF4$W*U zxu!q8kYP+>v!BNPVIRJUGIWU@7qVvx2VZDw4gV8%z%bjpF#aF(W|PmliwlakuRq>= zhaCRc^R!7T)#Twb0{!Tns=CxGcGX|leErg`f3|v0eBXxHU&6Sj-_>zOL!!d+j5Xt* zPS;rWd^zEF{5d5%)nNK=)zFJ8Uc=aQKD%UK)_TNes1Gh{SD*Mb_@O` z7*zs9Uq~Vq?v|^8FcM-yLGMKzR3YFB0z@CFM2X-dio%Gu6&MJj=I?uS7sA3AdE^p8 zE49$PjJzPIJwfn;jso7X2#jynr3dO@p5QAK1O9wqKLC=PkQjj~p#n|-5O`ihbTzzu zL{}2QEe28pJYfVZRW56FL`LvO&|C^1Th{0}hQMW$Ng$QPpnzlwnMnf=kVy8(y==L% zLMa>r0gELdT String { + return "\(username):\(password)".toBase64() + } + + public func authedRequest(path: String, + method: Alamofire.HTTPMethod, + parameters: [String:String]?, + encoder: Alamofire.ParameterEncoder?, + headers: Alamofire.HTTPHeaders? ) { + + let encoded = "\(username):\(password)".toBase64() + + var txHeaders = headers + + if headers == nil { + txHeaders = Alamofire.HTTPHeaders() + } + txHeaders?.add(name: "Authorization", value: "Basic \(encoded)") + + request(path: path, method: method, parameters: parameters, encoder: encoder, headers: txHeaders) + + } +} + +extension String { + + func toBase64() -> String { + return Data(self.utf8).base64EncodedString() + } + +} diff --git a/Music Tools/Views/LoginScreen.swift b/Music Tools/Views/LoginScreen.swift new file mode 100644 index 0000000..25b3664 --- /dev/null +++ b/Music Tools/Views/LoginScreen.swift @@ -0,0 +1,43 @@ +// +// LoginScreen.swift +// Music Tools +// +// Created by Andy Pack on 17/02/2020. +// Copyright © 2020 Sarsoo. All rights reserved. +// + +import SwiftUI + +struct LoginScreen: View { + var body: some View { + VStack { + Image("Logo") + .resizable() + .frame(width: 200.0, height: 200.0, alignment: .trailing) + .cornerRadius(18) + .shadow(radius: /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/) + .padding(.bottom, 20) + Text("Sarsoo Music Tools") + .font(.largeTitle) + TextField("Username", text: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Value@*/.constant("")/*@END_MENU_TOKEN@*/) + SecureField("Password", text: /*@START_MENU_TOKEN@*/ /*@PLACEHOLDER=Value@*/.constant("Apple")/*@END_MENU_TOKEN@*/) + HStack { + Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) { + Text("Log In") + + } + .padding(.trailing, 20.0) + Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) { + Text("Register") + } + } + } + .padding() + } +} + +struct LoginScreen_Previews: PreviewProvider { + static var previews: some View { + LoginScreen() + } +} diff --git a/Music Tools/Views/PlaylistList.swift b/Music Tools/Views/PlaylistList.swift index fd52270..d015846 100644 --- a/Music Tools/Views/PlaylistList.swift +++ b/Music Tools/Views/PlaylistList.swift @@ -1,8 +1,8 @@ // -// SwiftUIView.swift +// PlaylistList.swift // Music Tools // -// Created by Ellie McCarthy on 17/02/2020. +// Created by Andy Pack on 17/02/2020. // Copyright © 2020 Sarsoo. All rights reserved. // diff --git a/Music Tools/Views/PlaylistRow.swift b/Music Tools/Views/PlaylistRow.swift index fb7ed88..77d7e05 100644 --- a/Music Tools/Views/PlaylistRow.swift +++ b/Music Tools/Views/PlaylistRow.swift @@ -2,7 +2,7 @@ // PlaylistRow.swift // Music Tools // -// Created by Ellie McCarthy on 17/02/2020. +// Created by Andy Pack on 17/02/2020. // Copyright © 2020 Sarsoo. All rights reserved. // diff --git a/Music Tools/Views/PlaylistView.swift b/Music Tools/Views/PlaylistView.swift index a3c51c8..0624595 100644 --- a/Music Tools/Views/PlaylistView.swift +++ b/Music Tools/Views/PlaylistView.swift @@ -2,7 +2,7 @@ // PlaylistView.swift // Music Tools // -// Created by Ellie McCarthy on 16/02/2020. +// Created by Andy Pack on 16/02/2020. // Copyright © 2020 Sarsoo. All rights reserved. // diff --git a/Music Tools/Views/RootView.swift b/Music Tools/Views/RootView.swift index ed04305..e8c971a 100644 --- a/Music Tools/Views/RootView.swift +++ b/Music Tools/Views/RootView.swift @@ -1,5 +1,5 @@ // -// ContentView.swift +// RootView.swift // Music Tools // // Created by Andy Pack on 16/02/2020. @@ -7,44 +7,69 @@ // import SwiftUI +import Alamofire struct RootView: View { @State private var selection = 0 var body: some View { TabView(selection: $selection){ - List(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { item in - Text("Playlists") - .font(.title) - + NavigationView { + List(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { item in + Text("Playlist") + .font(.title) + + } + .navigationBarTitle(Text("Playlists").font(.title)) } .tabItem { VStack { - Image("first") + Image(systemName: "music.note.list") Text("Playlists") } } .tag(0) - Text("Tags") - .font(.title) - .tabItem { - VStack { - Image("second") - Text("Tags") - } + // + // + NavigationView { + List(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { item in + Text("Tag") + .font(.title) + } - .tag(1) + .navigationBarTitle(Text("Tags")) + } + .tabItem { + VStack { + Image(systemName: "sum") + Text("Tags") + } + } + .tag(1) + // + // Text("Settings") .font(.title) .tabItem { VStack { - Image("first") + Image(systemName: "slider.horizontal.3") Text("Settings") } } .tag(2) + }.onAppear { + self.fetch() } } + + private func fetch() { + let net: BasicAuthNetwork = BasicAuthNetwork(username: "", password: "") + net.authedRequest(path: "api/playlist", + method: Alamofire.HTTPMethod.get, + parameters: ["name": ""], + encoder: nil, + headers: nil) + } } struct RootView_Previews: PreviewProvider { diff --git a/Music ToolsTests/Music_ToolsTests.swift b/Music ToolsTests/Music_ToolsTests.swift index 7dba602..3eaf556 100644 --- a/Music ToolsTests/Music_ToolsTests.swift +++ b/Music ToolsTests/Music_ToolsTests.swift @@ -2,7 +2,7 @@ // Music_ToolsTests.swift // Music ToolsTests // -// Created by Ellie McCarthy on 16/02/2020. +// Created by Andy Pack on 16/02/2020. // Copyright © 2020 Sarsoo. All rights reserved. // diff --git a/Music ToolsUITests/Music_ToolsUITests.swift b/Music ToolsUITests/Music_ToolsUITests.swift index e98f370..b500ccd 100644 --- a/Music ToolsUITests/Music_ToolsUITests.swift +++ b/Music ToolsUITests/Music_ToolsUITests.swift @@ -2,7 +2,7 @@ // Music_ToolsUITests.swift // Music ToolsUITests // -// Created by Ellie McCarthy on 16/02/2020. +// Created by Andy Pack on 16/02/2020. // Copyright © 2020 Sarsoo. All rights reserved. //