Mercurial > public > lazybear
changeset 296:b481783c32c0
Start version 4
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sun, 21 Mar 2021 19:56:24 +0100 |
parents | 50a2fb4a174e |
children | 46dfb60e0874 |
files | Company+CoreDataClass.swift Company+CoreDataProperties.swift LazyBear.xcodeproj/project.pbxproj LazyBear/Assets.xcassets/Alternative icon/Contents.json LazyBear/Assets.xcassets/Alternative icon/blueIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/blueIcon.imageset/blue.png LazyBear/Assets.xcassets/Alternative icon/defaultIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/defaultIcon.imageset/default.png LazyBear/Assets.xcassets/Alternative icon/graffitiIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/graffitiIcon.imageset/graffiti.png LazyBear/Assets.xcassets/Alternative icon/greenIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/greenIcon.imageset/green.png LazyBear/Assets.xcassets/Alternative icon/matteBlackIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/matteBlackIcon.imageset/matteBlack.png LazyBear/Assets.xcassets/Alternative icon/matteWhiteIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/matteWhiteIcon.imageset/matteWhite.png LazyBear/Assets.xcassets/Alternative icon/pinkIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/pinkIcon.imageset/pink.png LazyBear/Assets.xcassets/Alternative icon/redIcon.imageset/Contents.json LazyBear/Assets.xcassets/Alternative icon/redIcon.imageset/red.png LazyBear/Assets.xcassets/Basic theme/Contents.json LazyBear/Assets.xcassets/Basic theme/basicAccent.colorset/Contents.json LazyBear/Assets.xcassets/Basic theme/basicBackground.colorset/Contents.json LazyBear/Assets.xcassets/Basic theme/basicRow0.colorset/Contents.json LazyBear/Assets.xcassets/Basic theme/basicRow1.colorset/Contents.json LazyBear/Assets.xcassets/Basic theme/basicRow2.colorset/Contents.json LazyBear/Assets.xcassets/Basic theme/basicRow3.colorset/Contents.json LazyBear/Assets.xcassets/Basic theme/basicRow4.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/Contents.json LazyBear/Assets.xcassets/Default theme/defaultAccent.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/defaultBackground.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/defaultRow0.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/defaultRow1.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/defaultRow2.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/defaultRow3.colorset/Contents.json LazyBear/Assets.xcassets/Default theme/defaultRow4.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/Contents.json LazyBear/Assets.xcassets/Earth theme/earthAccent.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/earthBackground.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/earthRow0.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/earthRow1.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/earthRow2.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/earthRow3.colorset/Contents.json LazyBear/Assets.xcassets/Earth theme/earthRow4.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/Contents.json LazyBear/Assets.xcassets/Forest theme/forestAccent.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/forestBackground.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/forestRow0.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/forestRow1.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/forestRow2.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/forestRow3.colorset/Contents.json LazyBear/Assets.xcassets/Forest theme/forestRow4.colorset/Contents.json LazyBear/Assets.xcassets/Logos/Contents.json LazyBear/Assets.xcassets/Logos/default.imageset/Contents.json LazyBear/Assets.xcassets/Logos/default.imageset/default.png LazyBear/Assets.xcassets/Multicolor theme/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorAccent.colorset/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorBackground.colorset/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorRow0.colorset/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorRow1.colorset/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorRow2.colorset/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorRow3.colorset/Contents.json LazyBear/Assets.xcassets/Multicolor theme/multicolorRow4.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/Contents.json LazyBear/Assets.xcassets/Nature theme/natureAccent.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/natureBackground.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/natureRow0.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/natureRow1.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/natureRow2.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/natureRow3.colorset/Contents.json LazyBear/Assets.xcassets/Nature theme/natureRow4.colorset/Contents.json LazyBear/Assets.xcassets/See theme/Contents.json LazyBear/Assets.xcassets/See theme/seeAccent.colorset/Contents.json LazyBear/Assets.xcassets/See theme/seeBackground.colorset/Contents.json LazyBear/Assets.xcassets/See theme/seeRow0.colorset/Contents.json LazyBear/Assets.xcassets/See theme/seeRow1.colorset/Contents.json LazyBear/Assets.xcassets/See theme/seeRow2.colorset/Contents.json LazyBear/Assets.xcassets/See theme/seeRow3.colorset/Contents.json LazyBear/Assets.xcassets/See theme/seeRow4.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/Contents.json LazyBear/Assets.xcassets/Summer theme/summerAccent.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/summerBackground.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/summerRow0.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/summerRow1.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/summerRow2.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/summerRow3.colorset/Contents.json LazyBear/Assets.xcassets/Summer theme/summerRow4.colorset/Contents.json LazyBear/Assets.xcassets/Themes/Contents.json LazyBear/CompanyOption.swift LazyBear/ContentView.swift LazyBear/DeviceSize.swift LazyBear/Functions/GetUrl.swift LazyBear/Functions/NormalizeData.swift LazyBear/Functions/ReadJson.swift LazyBear/Functions/Request.swift LazyBear/Functions/StringToDate.swift LazyBear/HUDManager.swift LazyBear/HapticsManager.swift LazyBear/Models/CompanyModel.swift LazyBear/Models/HistoricalPriceModel.swift LazyBear/Models/IconModel.swift LazyBear/Models/InsiderSummaryModel.swift LazyBear/Models/InsiderTranModel.swift LazyBear/Models/KeyStatsModel.swift LazyBear/Models/NewsLanguageModel.swift LazyBear/Models/NewsModel.swift LazyBear/Models/PriceModel.swift LazyBear/Models/ThemeModel.swift LazyBear/Resources/alternativeIcons.json LazyBear/Resources/blue.png LazyBear/Resources/default.png LazyBear/Resources/graffiti.png LazyBear/Resources/green.png LazyBear/Resources/matteBlack.png LazyBear/Resources/matteWhite.png LazyBear/Resources/newsLanguages.json LazyBear/Resources/pink.png LazyBear/Resources/red.png LazyBear/Resources/themes.json LazyBear/Resources/transactionCodes.swift LazyBear/UI/ActionView.swift LazyBear/UI/ChartView.swift LazyBear/UI/CompanyRow.swift LazyBear/UI/CompanyView.swift LazyBear/UI/DateSelection.swift LazyBear/UI/HorizontalBar.swift LazyBear/UI/IconPicker.swift LazyBear/UI/IexAttribution.swift LazyBear/UI/IndicatorPoint.swift LazyBear/UI/InsiderSummary.swift LazyBear/UI/InsiderTransactions.swift LazyBear/UI/KeyStatComponent.swift LazyBear/UI/KeyStatsDetail.swift LazyBear/UI/KeyStatsView.swift LazyBear/UI/LanguagePicker.swift LazyBear/UI/LineView.swift LazyBear/UI/NewsRow.swift LazyBear/UI/NewsView.swift LazyBear/UI/Notification.swift LazyBear/UI/PriceChartIndicator.swift LazyBear/UI/PriceView.swift LazyBear/UI/SafariView.swift LazyBear/UI/Search.swift LazyBear/UI/SettingRow.swift LazyBear/UI/Settings.swift LazyBear/UI/SideColor.swift LazyBear/UI/ThemePicker.swift LazyBear/UI/TransactionDetail.swift LazyBear/UI/TransactionRow.swift LazyBear/UI/Watchlist.swift LazyBear/Views/OnboardView.swift LazyBear/Views/WelcomeView.swift UserSettings+CoreDataClass.swift UserSettings+CoreDataProperties.swift |
diffstat | 154 files changed, 101 insertions(+), 5220 deletions(-) [+] |
line wrap: on
line diff
--- a/Company+CoreDataClass.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// -// Company+CoreDataClass.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// -// - -import Foundation -import CoreData - -@objc(Company) -public class Company: NSManagedObject { - -}
--- a/Company+CoreDataProperties.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// -// Company+CoreDataProperties.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// -// - -import Foundation -import CoreData - - -extension Company { - - @nonobjc public class func fetchRequest() -> NSFetchRequest<Company> { - return NSFetchRequest<Company>(entityName: "Company") - } - - @NSManaged public var symbol: String - @NSManaged public var exchange: String - @NSManaged public var exchangeName: String - @NSManaged public var name: String - @NSManaged public var region: String - @NSManaged public var currency: String - @NSManaged public var cik: String - -} -
--- a/LazyBear.xcodeproj/project.pbxproj Sat Mar 20 19:18:25 2021 +0100 +++ b/LazyBear.xcodeproj/project.pbxproj Sun Mar 21 19:56:24 2021 +0100 @@ -3,165 +3,36 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ - 9505763625ED605100D548E4 /* matteBlack.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763525ED605100D548E4 /* matteBlack.png */; }; - 9505764025ED670B00D548E4 /* graffiti.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763A25ED670B00D548E4 /* graffiti.png */; }; - 9505764125ED670B00D548E4 /* green.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763B25ED670B00D548E4 /* green.png */; }; - 9505764225ED670B00D548E4 /* matteWhite.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763C25ED670B00D548E4 /* matteWhite.png */; }; - 9505764325ED670B00D548E4 /* blue.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763D25ED670B00D548E4 /* blue.png */; }; - 9505764425ED670B00D548E4 /* pink.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763E25ED670B00D548E4 /* pink.png */; }; - 9505764525ED670B00D548E4 /* red.png in Resources */ = {isa = PBXBuildFile; fileRef = 9505763F25ED670B00D548E4 /* red.png */; }; - 950B674925E99FA900BF8593 /* IconPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950B674825E99FA900BF8593 /* IconPicker.swift */; }; - 950B674C25E9A03E00BF8593 /* alternativeIcons.json in Resources */ = {isa = PBXBuildFile; fileRef = 950B674B25E9A03E00BF8593 /* alternativeIcons.json */; }; - 950B674F25E9A0AE00BF8593 /* IconModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950B674E25E9A0AE00BF8593 /* IconModel.swift */; }; - 9517626025EEB37E00733235 /* PriceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9517625F25EEB37E00733235 /* PriceModel.swift */; }; - 9517626325EEBD3800733235 /* IexAttribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9517626225EEBD3800733235 /* IexAttribution.swift */; }; - 9520C26F25F4D43D0070DD71 /* TransactionDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9520C26E25F4D43D0070DD71 /* TransactionDetail.swift */; }; - 9525C89725FBF7310080A0E8 /* WaterfallGrid in Frameworks */ = {isa = PBXBuildFile; productRef = 9525C89625FBF7310080A0E8 /* WaterfallGrid */; }; - 9551FD9B2604E2B0009F61BF /* StringToDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9551FD9A2604E2B0009F61BF /* StringToDate.swift */; }; 95672B8F25DDA54700DCBE4A /* LazyBearApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95672B8E25DDA54700DCBE4A /* LazyBearApp.swift */; }; - 95672B9125DDA54700DCBE4A /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95672B9025DDA54700DCBE4A /* ContentView.swift */; }; 95672B9325DDA54700DCBE4A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95672B9225DDA54700DCBE4A /* Assets.xcassets */; }; 95672B9625DDA54700DCBE4A /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95672B9525DDA54700DCBE4A /* Preview Assets.xcassets */; }; 95672B9825DDA54700DCBE4A /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95672B9725DDA54700DCBE4A /* Persistence.swift */; }; 95672B9B25DDA54800DCBE4A /* LazyBear.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 95672B9925DDA54800DCBE4A /* LazyBear.xcdatamodeld */; }; - 957B816825F2A02C0005E5C0 /* InsiderTranModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957B816725F2A02C0005E5C0 /* InsiderTranModel.swift */; }; - 957B816D25F2A35D0005E5C0 /* TransactionRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957B816C25F2A35D0005E5C0 /* TransactionRow.swift */; }; - 957B817025F2A4290005E5C0 /* SideColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957B816F25F2A4290005E5C0 /* SideColor.swift */; }; - 958A733A25E00C3100FD7ECA /* Company+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A733825E00C3100FD7ECA /* Company+CoreDataClass.swift */; }; - 958A733B25E00C3100FD7ECA /* Company+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A733925E00C3100FD7ECA /* Company+CoreDataProperties.swift */; }; - 958A734225E00C9900FD7ECA /* Watchlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A734125E00C9900FD7ECA /* Watchlist.swift */; }; - 958A734525E00D3D00FD7ECA /* CompanyRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A734425E00D3D00FD7ECA /* CompanyRow.swift */; }; - 958A734925E010F900FD7ECA /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A734825E010F900FD7ECA /* Search.swift */; }; 958A735225E0170900FD7ECA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 958A735125E0170900FD7ECA /* CloudKit.framework */; }; - 958A735725E01F9E00FD7ECA /* ReadJson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A735625E01F9E00FD7ECA /* ReadJson.swift */; }; - 958A735B25E0264E00FD7ECA /* CompanyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A735A25E0264E00FD7ECA /* CompanyModel.swift */; }; - 958A735F25E0311B00FD7ECA /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958A735E25E0311B00FD7ECA /* Settings.swift */; }; - 95A5D95A25FCEDDB0090C1EA /* CompanyOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A5D95925FCEDDB0090C1EA /* CompanyOption.swift */; }; - 95A5D95D25FCEEBC0090C1EA /* GetUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A5D95C25FCEEBC0090C1EA /* GetUrl.swift */; }; - 95A5D96425FCF3640090C1EA /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A5D96325FCF3640090C1EA /* SafariView.swift */; }; - 95ABDD3125E1602D00310776 /* PriceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ABDD3025E1602D00310776 /* PriceView.swift */; }; - 95ABDD3525E166BA00310776 /* NewsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ABDD3425E166BA00310776 /* NewsView.swift */; }; - 95ABDD3825E167E500310776 /* NewsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ABDD3725E167E500310776 /* NewsModel.swift */; }; - 95ABDD3C25E1717300310776 /* NewsRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ABDD3B25E1717300310776 /* NewsRow.swift */; }; - 95ACB5A925E0397B00A3CCC8 /* CompanyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ACB5A825E0397B00A3CCC8 /* CompanyView.swift */; }; - 95ACB5AC25E03A7D00A3CCC8 /* themes.json in Resources */ = {isa = PBXBuildFile; fileRef = 95ACB5AB25E03A7D00A3CCC8 /* themes.json */; }; - 95ACB5AF25E03AA100A3CCC8 /* ThemeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ACB5AE25E03AA100A3CCC8 /* ThemeModel.swift */; }; - 95AEF3AC25FFBB4D001B77BB /* LineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEF3AB25FFBB4D001B77BB /* LineView.swift */; }; - 95AEF3B325FFDC04001B77BB /* DeviceSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEF3B225FFDC04001B77BB /* DeviceSize.swift */; }; - 95B3E09F25E127D7007EFDE3 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B3E09E25E127D7007EFDE3 /* Request.swift */; }; - 95B3E0A625E1318D007EFDE3 /* SwiftlySearch in Frameworks */ = {isa = PBXBuildFile; productRef = 95B3E0A525E1318D007EFDE3 /* SwiftlySearch */; }; - 95B60E402605054700A49DF8 /* KeyStatsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B60E3F2605054700A49DF8 /* KeyStatsModel.swift */; }; - 95B60E43260506F400A49DF8 /* KeyStatsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B60E42260506F400A49DF8 /* KeyStatsView.swift */; }; - 95B60E4626050A9C00A49DF8 /* KeyStatComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B60E4526050A9C00A49DF8 /* KeyStatComponent.swift */; }; - 95B746F52603A28100BC4E22 /* NormalizeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B746F42603A28100BC4E22 /* NormalizeData.swift */; }; - 95B746FD2603ACA200BC4E22 /* PriceChartIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B746FC2603ACA200BC4E22 /* PriceChartIndicator.swift */; }; - 95BB43C025EA667700B6C965 /* DateSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BB43BF25EA667700B6C965 /* DateSelection.swift */; }; - 95BFAE4B25E2AEA000A70EC3 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BFAE4A25E2AEA000A70EC3 /* Notification.swift */; }; - 95BFAE4E25E2B0C200A70EC3 /* HudManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BFAE4D25E2B0C200A70EC3 /* HudManager.swift */; }; - 95BFAE5425E2C52300A70EC3 /* HistoricalPriceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BFAE5325E2C52300A70EC3 /* HistoricalPriceModel.swift */; }; - 95BFAE5825E2C5A700A70EC3 /* ChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BFAE5725E2C5A700A70EC3 /* ChartView.swift */; }; - 95C9F857260544510062ED11 /* KeyStatsDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C9F856260544510062ED11 /* KeyStatsDetail.swift */; }; - 95D34C2725EFD5FE006F4A81 /* SDWebImageSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = 95D34C2625EFD5FE006F4A81 /* SDWebImageSwiftUI */; }; - 95D62B7826063489007EACBF /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D62B7726063489007EACBF /* HapticsManager.swift */; }; - 95D62B8326063931007EACBF /* HorizontalBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D62B8226063931007EACBF /* HorizontalBar.swift */; }; - 95DED9D525F2A752000DFCBA /* transactionCodes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95DED9D425F2A752000DFCBA /* transactionCodes.swift */; }; - 95DED9D825F2B1EF000DFCBA /* InsiderSummaryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95DED9D725F2B1EF000DFCBA /* InsiderSummaryModel.swift */; }; - 95DED9DB25F2B268000DFCBA /* InsiderSummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95DED9DA25F2B268000DFCBA /* InsiderSummary.swift */; }; - 95E9D09725F6AA0400A947A1 /* ActionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9D09625F6AA0400A947A1 /* ActionView.swift */; }; - 95F045FB25E96A58006A5A17 /* newsLanguages.json in Resources */ = {isa = PBXBuildFile; fileRef = 95F045FA25E96A58006A5A17 /* newsLanguages.json */; }; - 95F045FE25E96AA1006A5A17 /* NewsLanguageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F045FD25E96AA1006A5A17 /* NewsLanguageModel.swift */; }; - 95F0460425E96DBB006A5A17 /* UserSettings+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F0460225E96DBB006A5A17 /* UserSettings+CoreDataClass.swift */; }; - 95F0460525E96DBB006A5A17 /* UserSettings+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F0460325E96DBB006A5A17 /* UserSettings+CoreDataProperties.swift */; }; - 95F0460825E9704F006A5A17 /* ThemePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F0460725E9704F006A5A17 /* ThemePicker.swift */; }; - 95F0460B25E970DB006A5A17 /* LanguagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F0460A25E970DB006A5A17 /* LanguagePicker.swift */; }; - 95F0461025E976B5006A5A17 /* SettingRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F0460F25E976B5006A5A17 /* SettingRow.swift */; }; - 95F0462825E98376006A5A17 /* default.png in Resources */ = {isa = PBXBuildFile; fileRef = 95F0462625E98376006A5A17 /* default.png */; }; - 95F8433E2602455E00770F8A /* IndicatorPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F8433D2602455E00770F8A /* IndicatorPoint.swift */; }; - 95F90AB825F280190023A4B0 /* InsiderTransactions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F90AB725F280190023A4B0 /* InsiderTransactions.swift */; }; + 95AD4A2D26078C1400498079 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AD4A2C26078C1400498079 /* ContentView.swift */; }; + 95AD4A38260794A800498079 /* OnboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AD4A37260794A800498079 /* OnboardView.swift */; }; + 95E512D32607B42200C283E0 /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E512D22607B42200C283E0 /* WelcomeView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 9505763525ED605100D548E4 /* matteBlack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = matteBlack.png; sourceTree = "<group>"; }; - 9505763A25ED670B00D548E4 /* graffiti.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = graffiti.png; sourceTree = "<group>"; }; - 9505763B25ED670B00D548E4 /* green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = green.png; sourceTree = "<group>"; }; - 9505763C25ED670B00D548E4 /* matteWhite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = matteWhite.png; sourceTree = "<group>"; }; - 9505763D25ED670B00D548E4 /* blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blue.png; sourceTree = "<group>"; }; - 9505763E25ED670B00D548E4 /* pink.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pink.png; sourceTree = "<group>"; }; - 9505763F25ED670B00D548E4 /* red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = red.png; sourceTree = "<group>"; }; - 950B674825E99FA900BF8593 /* IconPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconPicker.swift; sourceTree = "<group>"; }; - 950B674B25E9A03E00BF8593 /* alternativeIcons.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = alternativeIcons.json; sourceTree = "<group>"; }; - 950B674E25E9A0AE00BF8593 /* IconModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconModel.swift; sourceTree = "<group>"; }; 950BA46B25E944F500D065EF /* Production.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Production.xcconfig; sourceTree = "<group>"; }; 950BA46C25E944FC00D065EF /* Sandbox.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Sandbox.xcconfig; sourceTree = "<group>"; }; - 9517625F25EEB37E00733235 /* PriceModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PriceModel.swift; sourceTree = "<group>"; }; - 9517626225EEBD3800733235 /* IexAttribution.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IexAttribution.swift; sourceTree = "<group>"; }; - 9520C26E25F4D43D0070DD71 /* TransactionDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionDetail.swift; sourceTree = "<group>"; }; - 9551FD9A2604E2B0009F61BF /* StringToDate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringToDate.swift; sourceTree = "<group>"; }; 95672B8B25DDA54700DCBE4A /* LazyBear.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LazyBear.app; sourceTree = BUILT_PRODUCTS_DIR; }; 95672B8E25DDA54700DCBE4A /* LazyBearApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LazyBearApp.swift; sourceTree = "<group>"; }; - 95672B9025DDA54700DCBE4A /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; 95672B9225DDA54700DCBE4A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 95672B9525DDA54700DCBE4A /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; }; 95672B9725DDA54700DCBE4A /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = "<group>"; }; 95672B9A25DDA54800DCBE4A /* LazyBear.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = LazyBear.xcdatamodel; sourceTree = "<group>"; }; 95672B9C25DDA54800DCBE4A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; - 957B816725F2A02C0005E5C0 /* InsiderTranModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderTranModel.swift; sourceTree = "<group>"; }; - 957B816C25F2A35D0005E5C0 /* TransactionRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionRow.swift; sourceTree = "<group>"; }; - 957B816F25F2A4290005E5C0 /* SideColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideColor.swift; sourceTree = "<group>"; }; - 958A733825E00C3100FD7ECA /* Company+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Company+CoreDataClass.swift"; sourceTree = "<group>"; }; - 958A733925E00C3100FD7ECA /* Company+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Company+CoreDataProperties.swift"; sourceTree = "<group>"; }; - 958A734125E00C9900FD7ECA /* Watchlist.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Watchlist.swift; sourceTree = "<group>"; }; - 958A734425E00D3D00FD7ECA /* CompanyRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompanyRow.swift; sourceTree = "<group>"; }; - 958A734825E010F900FD7ECA /* Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Search.swift; sourceTree = "<group>"; }; 958A734E25E016FD00FD7ECA /* LazyBear.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = LazyBear.entitlements; sourceTree = "<group>"; }; 958A735125E0170900FD7ECA /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; - 958A735625E01F9E00FD7ECA /* ReadJson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadJson.swift; sourceTree = "<group>"; }; - 958A735A25E0264E00FD7ECA /* CompanyModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompanyModel.swift; sourceTree = "<group>"; }; - 958A735E25E0311B00FD7ECA /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; }; - 95A5D95925FCEDDB0090C1EA /* CompanyOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompanyOption.swift; sourceTree = "<group>"; }; - 95A5D95C25FCEEBC0090C1EA /* GetUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetUrl.swift; sourceTree = "<group>"; }; - 95A5D96325FCF3640090C1EA /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; }; - 95ABDD3025E1602D00310776 /* PriceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PriceView.swift; sourceTree = "<group>"; }; - 95ABDD3425E166BA00310776 /* NewsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsView.swift; sourceTree = "<group>"; }; - 95ABDD3725E167E500310776 /* NewsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsModel.swift; sourceTree = "<group>"; }; - 95ABDD3B25E1717300310776 /* NewsRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsRow.swift; sourceTree = "<group>"; }; - 95ACB5A825E0397B00A3CCC8 /* CompanyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompanyView.swift; sourceTree = "<group>"; }; - 95ACB5AB25E03A7D00A3CCC8 /* themes.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = themes.json; sourceTree = "<group>"; }; - 95ACB5AE25E03AA100A3CCC8 /* ThemeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeModel.swift; sourceTree = "<group>"; }; - 95AEF3AB25FFBB4D001B77BB /* LineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineView.swift; sourceTree = "<group>"; }; - 95AEF3B225FFDC04001B77BB /* DeviceSize.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSize.swift; sourceTree = "<group>"; }; - 95B3E09E25E127D7007EFDE3 /* Request.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = "<group>"; }; - 95B60E3F2605054700A49DF8 /* KeyStatsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStatsModel.swift; sourceTree = "<group>"; }; - 95B60E42260506F400A49DF8 /* KeyStatsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStatsView.swift; sourceTree = "<group>"; }; - 95B60E4526050A9C00A49DF8 /* KeyStatComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStatComponent.swift; sourceTree = "<group>"; }; - 95B746F42603A28100BC4E22 /* NormalizeData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NormalizeData.swift; sourceTree = "<group>"; }; - 95B746FC2603ACA200BC4E22 /* PriceChartIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PriceChartIndicator.swift; sourceTree = "<group>"; }; - 95BB43BF25EA667700B6C965 /* DateSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateSelection.swift; sourceTree = "<group>"; }; - 95BFAE4A25E2AEA000A70EC3 /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; }; - 95BFAE4D25E2B0C200A70EC3 /* HudManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HudManager.swift; sourceTree = "<group>"; }; - 95BFAE5325E2C52300A70EC3 /* HistoricalPriceModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricalPriceModel.swift; sourceTree = "<group>"; }; - 95BFAE5725E2C5A700A70EC3 /* ChartView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartView.swift; sourceTree = "<group>"; }; - 95C9F856260544510062ED11 /* KeyStatsDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStatsDetail.swift; sourceTree = "<group>"; }; - 95D62B7726063489007EACBF /* HapticsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticsManager.swift; sourceTree = "<group>"; }; - 95D62B8226063931007EACBF /* HorizontalBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HorizontalBar.swift; sourceTree = "<group>"; }; - 95DED9D425F2A752000DFCBA /* transactionCodes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = transactionCodes.swift; sourceTree = "<group>"; }; - 95DED9D725F2B1EF000DFCBA /* InsiderSummaryModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderSummaryModel.swift; sourceTree = "<group>"; }; - 95DED9DA25F2B268000DFCBA /* InsiderSummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderSummary.swift; sourceTree = "<group>"; }; - 95E9D09625F6AA0400A947A1 /* ActionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionView.swift; sourceTree = "<group>"; }; - 95F045FA25E96A58006A5A17 /* newsLanguages.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = newsLanguages.json; sourceTree = "<group>"; }; - 95F045FD25E96AA1006A5A17 /* NewsLanguageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsLanguageModel.swift; sourceTree = "<group>"; }; - 95F0460225E96DBB006A5A17 /* UserSettings+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserSettings+CoreDataClass.swift"; sourceTree = "<group>"; }; - 95F0460325E96DBB006A5A17 /* UserSettings+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserSettings+CoreDataProperties.swift"; sourceTree = "<group>"; }; - 95F0460725E9704F006A5A17 /* ThemePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePicker.swift; sourceTree = "<group>"; }; - 95F0460A25E970DB006A5A17 /* LanguagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguagePicker.swift; sourceTree = "<group>"; }; - 95F0460F25E976B5006A5A17 /* SettingRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingRow.swift; sourceTree = "<group>"; }; - 95F0462625E98376006A5A17 /* default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = default.png; sourceTree = "<group>"; }; - 95F8433D2602455E00770F8A /* IndicatorPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IndicatorPoint.swift; sourceTree = "<group>"; }; - 95F90AB725F280190023A4B0 /* InsiderTransactions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderTransactions.swift; sourceTree = "<group>"; }; + 95AD4A2C26078C1400498079 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; + 95AD4A37260794A800498079 /* OnboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardView.swift; sourceTree = "<group>"; }; + 95E512D22607B42200C283E0 /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -169,10 +40,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 95D34C2725EFD5FE006F4A81 /* SDWebImageSwiftUI in Frameworks */, 958A735225E0170900FD7ECA /* CloudKit.framework in Frameworks */, - 9525C89725FBF7310080A0E8 /* WaterfallGrid in Frameworks */, - 95B3E0A625E1318D007EFDE3 /* SwiftlySearch in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -189,10 +57,6 @@ 95672B8225DDA54700DCBE4A = { isa = PBXGroup; children = ( - 95F0460225E96DBB006A5A17 /* UserSettings+CoreDataClass.swift */, - 95F0460325E96DBB006A5A17 /* UserSettings+CoreDataProperties.swift */, - 958A733825E00C3100FD7ECA /* Company+CoreDataClass.swift */, - 958A733925E00C3100FD7ECA /* Company+CoreDataProperties.swift */, 95672B8D25DDA54700DCBE4A /* LazyBear */, 95672B8C25DDA54700DCBE4A /* Products */, 958A735025E0170900FD7ECA /* Frameworks */, @@ -217,15 +81,11 @@ 950BA46C25E944FC00D065EF /* Sandbox.xcconfig */, 95672B9225DDA54700DCBE4A /* Assets.xcassets */, 95672B8E25DDA54700DCBE4A /* LazyBearApp.swift */, - 95672B9025DDA54700DCBE4A /* ContentView.swift */, - 95BFAE4D25E2B0C200A70EC3 /* HudManager.swift */, + 95AD4A2C26078C1400498079 /* ContentView.swift */, 95672B9725DDA54700DCBE4A /* Persistence.swift */, - 95A5D95925FCEDDB0090C1EA /* CompanyOption.swift */, - 95AEF3B225FFDC04001B77BB /* DeviceSize.swift */, - 95D62B7726063489007EACBF /* HapticsManager.swift */, - 95B1874925DDAC4D0068A364 /* UI */, + 95B1874925DDAC4D0068A364 /* Views */, + 95E512DE2607C81F00C283E0 /* Classes */, 95B1874825DDAC470068A364 /* Models */, - 958A735525E01F7E00FD7ECA /* Functions */, 95F0463425E98788006A5A17 /* Resources */, 950BA46D25E9450B00D065EF /* Tests */, 95672B9425DDA54700DCBE4A /* Preview Content */, @@ -249,87 +109,32 @@ name = Frameworks; sourceTree = "<group>"; }; - 958A735525E01F7E00FD7ECA /* Functions */ = { - isa = PBXGroup; - children = ( - 958A735625E01F9E00FD7ECA /* ReadJson.swift */, - 95B3E09E25E127D7007EFDE3 /* Request.swift */, - 95A5D95C25FCEEBC0090C1EA /* GetUrl.swift */, - 95B746F42603A28100BC4E22 /* NormalizeData.swift */, - 9551FD9A2604E2B0009F61BF /* StringToDate.swift */, - ); - path = Functions; - sourceTree = "<group>"; - }; 95B1874825DDAC470068A364 /* Models */ = { isa = PBXGroup; children = ( - 958A735A25E0264E00FD7ECA /* CompanyModel.swift */, - 95ACB5AE25E03AA100A3CCC8 /* ThemeModel.swift */, - 95ABDD3725E167E500310776 /* NewsModel.swift */, - 95BFAE5325E2C52300A70EC3 /* HistoricalPriceModel.swift */, - 95F045FD25E96AA1006A5A17 /* NewsLanguageModel.swift */, - 950B674E25E9A0AE00BF8593 /* IconModel.swift */, - 9517625F25EEB37E00733235 /* PriceModel.swift */, - 957B816725F2A02C0005E5C0 /* InsiderTranModel.swift */, - 95DED9D725F2B1EF000DFCBA /* InsiderSummaryModel.swift */, - 95B60E3F2605054700A49DF8 /* KeyStatsModel.swift */, ); path = Models; sourceTree = "<group>"; }; - 95B1874925DDAC4D0068A364 /* UI */ = { + 95B1874925DDAC4D0068A364 /* Views */ = { isa = PBXGroup; children = ( - 958A734125E00C9900FD7ECA /* Watchlist.swift */, - 958A734825E010F900FD7ECA /* Search.swift */, - 958A734425E00D3D00FD7ECA /* CompanyRow.swift */, - 957B816F25F2A4290005E5C0 /* SideColor.swift */, - 95ACB5A825E0397B00A3CCC8 /* CompanyView.swift */, - 95ABDD3025E1602D00310776 /* PriceView.swift */, - 95BB43BF25EA667700B6C965 /* DateSelection.swift */, - 95BFAE5725E2C5A700A70EC3 /* ChartView.swift */, - 95B746FC2603ACA200BC4E22 /* PriceChartIndicator.swift */, - 95ABDD3425E166BA00310776 /* NewsView.swift */, - 95ABDD3B25E1717300310776 /* NewsRow.swift */, - 95A5D96325FCF3640090C1EA /* SafariView.swift */, - 958A735E25E0311B00FD7ECA /* Settings.swift */, - 95F0460725E9704F006A5A17 /* ThemePicker.swift */, - 95F0460A25E970DB006A5A17 /* LanguagePicker.swift */, - 950B674825E99FA900BF8593 /* IconPicker.swift */, - 95F0460F25E976B5006A5A17 /* SettingRow.swift */, - 9517626225EEBD3800733235 /* IexAttribution.swift */, - 95BFAE4A25E2AEA000A70EC3 /* Notification.swift */, - 95F90AB725F280190023A4B0 /* InsiderTransactions.swift */, - 957B816C25F2A35D0005E5C0 /* TransactionRow.swift */, - 9520C26E25F4D43D0070DD71 /* TransactionDetail.swift */, - 95DED9DA25F2B268000DFCBA /* InsiderSummary.swift */, - 95D62B8226063931007EACBF /* HorizontalBar.swift */, - 95E9D09625F6AA0400A947A1 /* ActionView.swift */, - 95AEF3AB25FFBB4D001B77BB /* LineView.swift */, - 95F8433D2602455E00770F8A /* IndicatorPoint.swift */, - 95B60E42260506F400A49DF8 /* KeyStatsView.swift */, - 95B60E4526050A9C00A49DF8 /* KeyStatComponent.swift */, - 95C9F856260544510062ED11 /* KeyStatsDetail.swift */, + 95E512D22607B42200C283E0 /* WelcomeView.swift */, + 95AD4A37260794A800498079 /* OnboardView.swift */, ); - path = UI; + path = Views; + sourceTree = "<group>"; + }; + 95E512DE2607C81F00C283E0 /* Classes */ = { + isa = PBXGroup; + children = ( + ); + path = Classes; sourceTree = "<group>"; }; 95F0463425E98788006A5A17 /* Resources */ = { isa = PBXGroup; children = ( - 95ACB5AB25E03A7D00A3CCC8 /* themes.json */, - 95F045FA25E96A58006A5A17 /* newsLanguages.json */, - 950B674B25E9A03E00BF8593 /* alternativeIcons.json */, - 95F0462625E98376006A5A17 /* default.png */, - 9505763D25ED670B00D548E4 /* blue.png */, - 9505763B25ED670B00D548E4 /* green.png */, - 9505763E25ED670B00D548E4 /* pink.png */, - 9505763F25ED670B00D548E4 /* red.png */, - 9505763525ED605100D548E4 /* matteBlack.png */, - 9505763C25ED670B00D548E4 /* matteWhite.png */, - 9505763A25ED670B00D548E4 /* graffiti.png */, - 95DED9D425F2A752000DFCBA /* transactionCodes.swift */, ); path = Resources; sourceTree = "<group>"; @@ -351,9 +156,6 @@ ); name = LazyBear; packageProductDependencies = ( - 95B3E0A525E1318D007EFDE3 /* SwiftlySearch */, - 95D34C2625EFD5FE006F4A81 /* SDWebImageSwiftUI */, - 9525C89625FBF7310080A0E8 /* WaterfallGrid */, ); productName = LazyBear; productReference = 95672B8B25DDA54700DCBE4A /* LazyBear.app */; @@ -383,9 +185,6 @@ ); mainGroup = 95672B8225DDA54700DCBE4A; packageReferences = ( - 95B3E0A425E1318D007EFDE3 /* XCRemoteSwiftPackageReference "SwiftlySearch" */, - 95D34C2525EFD5FE006F4A81 /* XCRemoteSwiftPackageReference "SDWebImageSwiftUI" */, - 9525C89525FBF7310080A0E8 /* XCRemoteSwiftPackageReference "WaterfallGrid" */, ); productRefGroup = 95672B8C25DDA54700DCBE4A /* Products */; projectDirPath = ""; @@ -402,18 +201,7 @@ buildActionMask = 2147483647; files = ( 95672B9625DDA54700DCBE4A /* Preview Assets.xcassets in Resources */, - 95F0462825E98376006A5A17 /* default.png in Resources */, - 95ACB5AC25E03A7D00A3CCC8 /* themes.json in Resources */, - 9505764225ED670B00D548E4 /* matteWhite.png in Resources */, - 9505764525ED670B00D548E4 /* red.png in Resources */, - 9505764125ED670B00D548E4 /* green.png in Resources */, - 9505764425ED670B00D548E4 /* pink.png in Resources */, - 9505764025ED670B00D548E4 /* graffiti.png in Resources */, - 9505763625ED605100D548E4 /* matteBlack.png in Resources */, - 9505764325ED670B00D548E4 /* blue.png in Resources */, - 95F045FB25E96A58006A5A17 /* newsLanguages.json in Resources */, 95672B9325DDA54700DCBE4A /* Assets.xcassets in Resources */, - 950B674C25E9A03E00BF8593 /* alternativeIcons.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -424,64 +212,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 95ABDD3825E167E500310776 /* NewsModel.swift in Sources */, - 95B60E402605054700A49DF8 /* KeyStatsModel.swift in Sources */, - 95ABDD3C25E1717300310776 /* NewsRow.swift in Sources */, - 950B674925E99FA900BF8593 /* IconPicker.swift in Sources */, - 958A735725E01F9E00FD7ECA /* ReadJson.swift in Sources */, - 95B60E43260506F400A49DF8 /* KeyStatsView.swift in Sources */, - 958A734925E010F900FD7ECA /* Search.swift in Sources */, - 958A735F25E0311B00FD7ECA /* Settings.swift in Sources */, - 95F0461025E976B5006A5A17 /* SettingRow.swift in Sources */, - 95B60E4626050A9C00A49DF8 /* KeyStatComponent.swift in Sources */, - 95D62B7826063489007EACBF /* HapticsManager.swift in Sources */, - 95F0460825E9704F006A5A17 /* ThemePicker.swift in Sources */, - 95A5D95A25FCEDDB0090C1EA /* CompanyOption.swift in Sources */, - 95AEF3AC25FFBB4D001B77BB /* LineView.swift in Sources */, 95672B9825DDA54700DCBE4A /* Persistence.swift in Sources */, - 958A735B25E0264E00FD7ECA /* CompanyModel.swift in Sources */, - 95B3E09F25E127D7007EFDE3 /* Request.swift in Sources */, - 95F045FE25E96AA1006A5A17 /* NewsLanguageModel.swift in Sources */, - 95BFAE5425E2C52300A70EC3 /* HistoricalPriceModel.swift in Sources */, - 95B746FD2603ACA200BC4E22 /* PriceChartIndicator.swift in Sources */, - 95BFAE5825E2C5A700A70EC3 /* ChartView.swift in Sources */, - 95672B9125DDA54700DCBE4A /* ContentView.swift in Sources */, - 95F0460425E96DBB006A5A17 /* UserSettings+CoreDataClass.swift in Sources */, - 950B674F25E9A0AE00BF8593 /* IconModel.swift in Sources */, - 95A5D96425FCF3640090C1EA /* SafariView.swift in Sources */, - 958A733B25E00C3100FD7ECA /* Company+CoreDataProperties.swift in Sources */, - 95A5D95D25FCEEBC0090C1EA /* GetUrl.swift in Sources */, - 9517626325EEBD3800733235 /* IexAttribution.swift in Sources */, - 95F90AB825F280190023A4B0 /* InsiderTransactions.swift in Sources */, - 95F8433E2602455E00770F8A /* IndicatorPoint.swift in Sources */, - 95ACB5AF25E03AA100A3CCC8 /* ThemeModel.swift in Sources */, + 95E512D32607B42200C283E0 /* WelcomeView.swift in Sources */, + 95AD4A38260794A800498079 /* OnboardView.swift in Sources */, 95672B8F25DDA54700DCBE4A /* LazyBearApp.swift in Sources */, - 9517626025EEB37E00733235 /* PriceModel.swift in Sources */, - 95AEF3B325FFDC04001B77BB /* DeviceSize.swift in Sources */, - 9551FD9B2604E2B0009F61BF /* StringToDate.swift in Sources */, - 958A734525E00D3D00FD7ECA /* CompanyRow.swift in Sources */, - 95DED9D525F2A752000DFCBA /* transactionCodes.swift in Sources */, - 95ABDD3525E166BA00310776 /* NewsView.swift in Sources */, - 95D62B8326063931007EACBF /* HorizontalBar.swift in Sources */, - 957B816825F2A02C0005E5C0 /* InsiderTranModel.swift in Sources */, 95672B9B25DDA54800DCBE4A /* LazyBear.xcdatamodeld in Sources */, - 95F0460B25E970DB006A5A17 /* LanguagePicker.swift in Sources */, - 95E9D09725F6AA0400A947A1 /* ActionView.swift in Sources */, - 95ABDD3125E1602D00310776 /* PriceView.swift in Sources */, - 95BFAE4B25E2AEA000A70EC3 /* Notification.swift in Sources */, - 95F0460525E96DBB006A5A17 /* UserSettings+CoreDataProperties.swift in Sources */, - 95DED9DB25F2B268000DFCBA /* InsiderSummary.swift in Sources */, - 958A733A25E00C3100FD7ECA /* Company+CoreDataClass.swift in Sources */, - 957B816D25F2A35D0005E5C0 /* TransactionRow.swift in Sources */, - 95ACB5A925E0397B00A3CCC8 /* CompanyView.swift in Sources */, - 958A734225E00C9900FD7ECA /* Watchlist.swift in Sources */, - 9520C26F25F4D43D0070DD71 /* TransactionDetail.swift in Sources */, - 95BB43C025EA667700B6C965 /* DateSelection.swift in Sources */, - 957B817025F2A4290005E5C0 /* SideColor.swift in Sources */, - 95DED9D825F2B1EF000DFCBA /* InsiderSummaryModel.swift in Sources */, - 95C9F857260544510062ED11 /* KeyStatsDetail.swift in Sources */, - 95B746F52603A28100BC4E22 /* NormalizeData.swift in Sources */, - 95BFAE4E25E2B0C200A70EC3 /* HudManager.swift in Sources */, + 95AD4A2D26078C1400498079 /* ContentView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -623,7 +359,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.3; + MARKETING_VERSION = 4; PRODUCT_BUNDLE_IDENTIFIER = dennis.LazyBear; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -648,7 +384,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.3; + MARKETING_VERSION = 4; PRODUCT_BUNDLE_IDENTIFIER = dennis.LazyBear; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -679,51 +415,6 @@ }; /* End XCConfigurationList section */ -/* Begin XCRemoteSwiftPackageReference section */ - 9525C89525FBF7310080A0E8 /* XCRemoteSwiftPackageReference "WaterfallGrid" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/paololeonardi/WaterfallGrid.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.0.1; - }; - }; - 95B3E0A425E1318D007EFDE3 /* XCRemoteSwiftPackageReference "SwiftlySearch" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/thislooksfun/SwiftlySearch.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.2.3; - }; - }; - 95D34C2525EFD5FE006F4A81 /* XCRemoteSwiftPackageReference "SDWebImageSwiftUI" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/SDWebImage/SDWebImageSwiftUI.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.0.1; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 9525C89625FBF7310080A0E8 /* WaterfallGrid */ = { - isa = XCSwiftPackageProductDependency; - package = 9525C89525FBF7310080A0E8 /* XCRemoteSwiftPackageReference "WaterfallGrid" */; - productName = WaterfallGrid; - }; - 95B3E0A525E1318D007EFDE3 /* SwiftlySearch */ = { - isa = XCSwiftPackageProductDependency; - package = 95B3E0A425E1318D007EFDE3 /* XCRemoteSwiftPackageReference "SwiftlySearch" */; - productName = SwiftlySearch; - }; - 95D34C2625EFD5FE006F4A81 /* SDWebImageSwiftUI */ = { - isa = XCSwiftPackageProductDependency; - package = 95D34C2525EFD5FE006F4A81 /* XCRemoteSwiftPackageReference "SDWebImageSwiftUI" */; - productName = SDWebImageSwiftUI; - }; -/* End XCSwiftPackageProductDependency section */ - /* Begin XCVersionGroup section */ 95672B9925DDA54800DCBE4A /* LazyBear.xcdatamodeld */ = { isa = XCVersionGroup;
--- a/LazyBear/Assets.xcassets/Alternative icon/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Alternative icon/blueIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "blue.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Alternative icon/defaultIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "default.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Alternative icon/graffitiIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "graffiti.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
Binary file LazyBear/Assets.xcassets/Alternative icon/graffitiIcon.imageset/graffiti.png has changed
--- a/LazyBear/Assets.xcassets/Alternative icon/greenIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "green.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Alternative icon/matteBlackIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "matteBlack.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
Binary file LazyBear/Assets.xcassets/Alternative icon/matteBlackIcon.imageset/matteBlack.png has changed
--- a/LazyBear/Assets.xcassets/Alternative icon/matteWhiteIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "matteWhite.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
Binary file LazyBear/Assets.xcassets/Alternative icon/matteWhiteIcon.imageset/matteWhite.png has changed
--- a/LazyBear/Assets.xcassets/Alternative icon/pinkIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "pink.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Alternative icon/redIcon.imageset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "red.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.702", - "green" : "0.747", - "red" : "0.514" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.702", - "green" : "0.747", - "red" : "0.514" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.384", - "green" : "0.412", - "red" : "0.881" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.384", - "green" : "0.412", - "red" : "0.881" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.310", - "green" : "0.318", - "red" : "0.314" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.310", - "green" : "0.318", - "red" : "0.314" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.384", - "green" : "0.412", - "red" : "0.881" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.384", - "green" : "0.412", - "red" : "0.881" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.475", - "green" : "0.881", - "red" : "0.980" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.475", - "green" : "0.881", - "red" : "0.980" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.615", - "green" : "0.475", - "red" : "0.247" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.615", - "green" : "0.475", - "red" : "0.247" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Basic theme/basicRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.702", - "green" : "0.747", - "red" : "0.514" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.702", - "green" : "0.747", - "red" : "0.514" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "platform" : "ios", - "reference" : "linkColor" - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "platform" : "ios", - "reference" : "linkColor" - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.729", - "green" : "0.649", - "red" : "0.545" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.729", - "green" : "0.649", - "red" : "0.545" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.419", - "green" : "0.299", - "red" : "0.227" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.419", - "green" : "0.299", - "red" : "0.227" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.772", - "green" : "0.688", - "red" : "0.577" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.772", - "green" : "0.688", - "red" : "0.577" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.859", - "green" : "0.851", - "red" : "0.779" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.859", - "green" : "0.851", - "red" : "0.779" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.298", - "green" : "0.403", - "red" : "0.771" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.298", - "green" : "0.403", - "red" : "0.771" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Default theme/defaultRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.227", - "green" : "0.179", - "red" : "0.153" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.227", - "green" : "0.179", - "red" : "0.153" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.200", - "green" : "0.544", - "red" : "0.925" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.200", - "green" : "0.544", - "red" : "0.925" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.254", - "green" : "0.727", - "red" : "0.957" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.254", - "green" : "0.727", - "red" : "0.957" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.889", - "green" : "0.786", - "red" : "0.609" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.889", - "green" : "0.786", - "red" : "0.609" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.724", - "green" : "0.610", - "red" : "0.300" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.724", - "green" : "0.610", - "red" : "0.300" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.270", - "green" : "0.186", - "red" : "0.068" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.270", - "green" : "0.186", - "red" : "0.068" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.254", - "green" : "0.727", - "red" : "0.957" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.254", - "green" : "0.727", - "red" : "0.957" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Earth theme/earthRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.200", - "green" : "0.544", - "red" : "0.925" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.200", - "green" : "0.544", - "red" : "0.925" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.435", - "green" : "0.472", - "red" : "0.356" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.435", - "green" : "0.472", - "red" : "0.356" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.777", - "green" : "0.821", - "red" : "0.797" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.777", - "green" : "0.821", - "red" : "0.797" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.777", - "green" : "0.821", - "red" : "0.797" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.777", - "green" : "0.821", - "red" : "0.797" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.557", - "green" : "0.658", - "red" : "0.545" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.557", - "green" : "0.658", - "red" : "0.545" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.435", - "green" : "0.472", - "red" : "0.356" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.435", - "green" : "0.472", - "red" : "0.356" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.317", - "green" : "0.306", - "red" : "0.231" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.317", - "green" : "0.306", - "red" : "0.231" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Forest theme/forestRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.270", - "green" : "0.243", - "red" : "0.197" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.270", - "green" : "0.243", - "red" : "0.197" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Assets.xcassets/Logos/Contents.json Sun Mar 21 19:56:24 2021 +0100 @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Assets.xcassets/Logos/default.imageset/Contents.json Sun Mar 21 19:56:24 2021 +0100 @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "default.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- a/LazyBear/Assets.xcassets/Multicolor theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.442", - "green" : "0.332", - "red" : "0.865" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.442", - "green" : "0.332", - "red" : "0.865" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.467", - "green" : "0.825", - "red" : "0.970" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.467", - "green" : "0.825", - "red" : "0.970" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.643", - "green" : "0.825", - "red" : "0.383" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.643", - "green" : "0.825", - "red" : "0.383" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.681", - "green" : "0.534", - "red" : "0.247" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.681", - "green" : "0.534", - "red" : "0.247" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.290", - "green" : "0.226", - "red" : "0.097" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.290", - "green" : "0.226", - "red" : "0.097" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.442", - "green" : "0.332", - "red" : "0.865" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.442", - "green" : "0.332", - "red" : "0.865" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Multicolor theme/multicolorRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.467", - "green" : "0.825", - "red" : "0.970" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.467", - "green" : "0.825", - "red" : "0.970" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.511", - "green" : "0.609", - "red" : "0.765" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.511", - "green" : "0.609", - "red" : "0.765" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.672", - "green" : "0.750", - "red" : "0.847" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.672", - "green" : "0.750", - "red" : "0.847" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.369", - "green" : "0.437", - "red" : "0.423" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.369", - "green" : "0.437", - "red" : "0.423" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.672", - "green" : "0.750", - "red" : "0.847" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.672", - "green" : "0.750", - "red" : "0.847" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.848", - "green" : "0.915", - "red" : "0.986" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.848", - "green" : "0.915", - "red" : "0.986" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.651", - "green" : "0.719", - "red" : "0.717" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.651", - "green" : "0.719", - "red" : "0.717" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Nature theme/natureRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.561", - "green" : "0.645", - "red" : "0.646" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.561", - "green" : "0.645", - "red" : "0.646" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.333", - "green" : "0.204", - "red" : "0.134" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.333", - "green" : "0.204", - "red" : "0.134" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.603", - "green" : "0.475", - "red" : "0.320" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.603", - "green" : "0.475", - "red" : "0.320" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.333", - "green" : "0.204", - "red" : "0.134" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.333", - "green" : "0.204", - "red" : "0.134" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.603", - "green" : "0.475", - "red" : "0.320" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.603", - "green" : "0.475", - "red" : "0.320" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.858", - "green" : "0.847", - "red" : "0.700" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.858", - "green" : "0.847", - "red" : "0.700" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.937", - "green" : "0.978", - "red" : "0.950" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.937", - "green" : "0.978", - "red" : "0.950" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/See theme/seeRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.298", - "green" : "0.283", - "red" : "0.833" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.298", - "green" : "0.283", - "red" : "0.833" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerAccent.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.424", - "green" : "0.650", - "red" : "0.910" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.424", - "green" : "0.650", - "red" : "0.910" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerBackground.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.560", - "green" : "0.606", - "red" : "0.310" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.560", - "green" : "0.606", - "red" : "0.310" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerRow0.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.321", - "green" : "0.270", - "red" : "0.180" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.321", - "green" : "0.270", - "red" : "0.180" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerRow1.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.560", - "green" : "0.606", - "red" : "0.310" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.560", - "green" : "0.606", - "red" : "0.310" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerRow2.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.466", - "green" : "0.774", - "red" : "0.890" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.466", - "green" : "0.774", - "red" : "0.890" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerRow3.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.424", - "green" : "0.650", - "red" : "0.910" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.424", - "green" : "0.650", - "red" : "0.910" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- a/LazyBear/Assets.xcassets/Summer theme/summerRow4.colorset/Contents.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.349", - "green" : "0.462", - "red" : "0.848" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0.349", - "green" : "0.462", - "red" : "0.848" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Assets.xcassets/Themes/Contents.json Sun Mar 21 19:56:24 2021 +0100 @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +}
--- a/LazyBear/CompanyOption.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -// -// CompanyOption.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 13/3/21. -// - -import SwiftUI - -class CompanyOption: ObservableObject { - @Published var view = ViewType.stock -}
--- a/LazyBear/ContentView.swift Sat Mar 20 19:18:25 2021 +0100 +++ b/LazyBear/ContentView.swift Sun Mar 21 19:56:24 2021 +0100 @@ -2,79 +2,19 @@ // ContentView.swift // LazyBear // -// Created by Dennis Concepción Martín on 17/2/21. +// Created by Dennis Concepción Martín on 21/3/21. // import SwiftUI struct ContentView: View { - @EnvironmentObject var hudManager: HudManager - @EnvironmentObject var deviceSize: DeviceSize - @EnvironmentObject var hapticsManager: HapticsManager - - // Fetch user appearence settings - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - var body: some View { - GeometryReader { geo in - ZStack(alignment: .top) { - TabView { - // First view - Watchlist() - .tabItem { - Label("Watchlist", systemImage: "list.dash") - } - - // First view - Search() - .tabItem { - Label("Search", systemImage: "magnifyingglass") - } - - // First view - Settings() - .tabItem { - Label("Settings", systemImage: "gear") - } - } - - // Show HUDs - // Notification - Notification(text: "Company saved", image: "checkmark.circle") - .offset(y: hudManager.showNotification ? 0 : -100) - .animation(.easeInOut) - - // Action sheet - ZStack(alignment: .bottom) { - Color(.black) - .edgesIgnoringSafeArea(.all) - .opacity(hudManager.showAction ? 0.2: 0) - .animation(.easeInOut) - .onTapGesture { hudManager.showAction = false } - - ActionView() - .offset(y: hudManager.showAction ? 0 : 250) - .animation(.easeInOut) - .padding() - } - } - .accentColor(Color("\(userSettings.first?.theme?.lowercased() ?? "default")Accent")) - // If this value is not optional it will cause a crash - .onAppear { - // Assign device screen size to the class - self.deviceSize.width = geo.size.width - self.deviceSize.height = geo.size.height - hapticsManager.prepareHaptics() - } - } + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) } } - struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() - .environmentObject(HudManager()) } }
--- a/LazyBear/DeviceSize.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -// -// DeviceSize.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 15/3/21. -// - -import SwiftUI - -class DeviceSize: ObservableObject { - @Published var width = CGFloat(400) - @Published var height = CGFloat(400) -}
--- a/LazyBear/Functions/GetUrl.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// -// GetUrl.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 13/3/21. -// - -import SwiftUI - -enum Endpoint { - case quote - case news - case historicalPrices - case insiderTransactions - case insiderSummary - case keyStats -} - -func getUrl(endpoint: Endpoint, symbol: String, range: String = "") -> String { - let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url" - let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key" - - switch endpoint { - case .quote: - return "\(baseUrl)/stock/\(symbol)/quote?token=\(apiKey)" - case .news: - return "\(baseUrl)/stock/\(symbol)/news/last/30?token=\(apiKey)" - case .historicalPrices: - return "\(baseUrl)/stock/\(symbol)/chart/\(range)?chartCloseOnly=true&token=\(apiKey)" - case .insiderTransactions: - return "\(baseUrl)/stock/\(symbol)/insider-transactions?token=\(apiKey)" - case .insiderSummary: - return "\(baseUrl)/stock/\(symbol)/insider-roster?token=\(apiKey)" - case .keyStats: - return "\(baseUrl)/stock/\(symbol)/stats?token=\(apiKey)" - } -}
--- a/LazyBear/Functions/NormalizeData.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -// -// NormalizeData.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 18/3/21. -// - -import SwiftUI - -func normalize(_ data: [Double]) -> [Double] { - var normalData = [Double]() - let min = data.min()! - let max = data.max()! - - for value in data { - let normal = (value - min) / (max - min) - normalData.append(normal) - } - - return normalData -}
--- a/LazyBear/Functions/ReadJson.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -// -// ReadJson.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import Foundation - -let themes: [ThemeModel] = load("themes.json") -let newsLanguages: [NewsLanguageModel] = load("newsLanguages.json") -let icons: [IconModel] = load("alternativeIcons.json") - -func load<T: Decodable>(_ filename: String) -> T { - let data: Data - - guard let file = Bundle.main.url(forResource: filename, withExtension: nil) - else { - fatalError("Couldn't find \(filename) in main bundle.") - } - - do { - data = try Data(contentsOf: file) - } catch { - fatalError("Couldn't load \(filename) from main bundle:\n\(error)") - } - - do { - let decoder = JSONDecoder() - return try decoder.decode(T.self, from: data) - } catch { - fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)") - } -}
--- a/LazyBear/Functions/Request.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -// -// Request.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/2/21. -// - -import Foundation - -// Network request -func request<T: Decodable>(url: String, model: T.Type, completion: @escaping (_ result: T) -> Void) { - // We take some model data T.Type - guard let url = URL(string: url) else { - print("Invalid URL") - return - } - let request = URLRequest(url: url) - URLSession.shared.dataTask(with: request) { data, response, error in - if let data = data { - do { - // Decode response with the model passed - let decodedResponse = try JSONDecoder().decode(model, from: data) - DispatchQueue.main.async { - completion(decodedResponse) - } - return - } catch { - // Return error regarding the escaping code - print(error) - } - } - // Error with the request - print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")") - } - .resume() -}
--- a/LazyBear/Functions/StringToDate.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -// -// DateToString.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/3/21. -// - -import SwiftUI - -func convertStringToDate(_ stringDate: String) -> String { - // Convert string to date - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "yy-MM-dd" - let date = dateFormatter.date(from: stringDate) - - // Format date to the final format - dateFormatter.dateStyle = .long - let finalDate = dateFormatter.string(from: date!) - - return finalDate -}
--- a/LazyBear/HUDManager.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -// -// HUDManager.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 21/2/21. -// - -import SwiftUI - -enum HudType { - case notification, action -} - -class HudManager: ObservableObject { - @Published var showNotification = false - @Published var showAction = false - - func selectHud(type: HudType) { - if type == .notification { - self.showNotification = true - - // Dimiss after time - DispatchQueue.main.asyncAfter(deadline: .now() + 2) { - self.showNotification = false - } - } else if type == .action { - self.showAction = true - } - } -}
--- a/LazyBear/HapticsManager.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -// -// Haptics.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/3/21. -// - -import SwiftUI -import CoreHaptics - -class HapticsManager: ObservableObject { - @Published var engine: CHHapticEngine? - - func prepareHaptics() { - guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } - - do { - self.engine = try CHHapticEngine() - try engine?.start() - } catch { - print("There was an error creating the engine: \(error.localizedDescription)") - } - } - - func simpleSuccess() { - let generator = UINotificationFeedbackGenerator() - generator.notificationOccurred(.success) - } - - func complexSuccess() { - // make sure that the device supports haptics - guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } - var events = [CHHapticEvent]() - - // create one intense, sharp tap - let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 2) - let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1) - let event = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0) - events.append(event) - - // convert those events into a pattern and play it immediately - do { - let pattern = try CHHapticPattern(events: events, parameters: []) - let player = try engine?.makePlayer(with: pattern) - try player?.start(atTime: 0) - } catch { - print("Failed to play pattern: \(error.localizedDescription).") - } - } -}
--- a/LazyBear/Models/CompanyModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -// -// LocalCompany.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI - -struct CompanyModel: Codable { - var symbol: String - var securityName: String? -} -
--- a/LazyBear/Models/HistoricalPriceModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -// -// HistoricalPrice.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 21/2/21. -// - -import SwiftUI - -struct HistoricalPriceModel: Codable { - var date: String - var minute: String? // Intraday data only - var close: Double - var volume: Int - var change: Double? // Not intraday data only - var changePercent: Double? // Not intraday data only - var changeOverTime: Double? // Not intraday data only - -}
--- a/LazyBear/Models/IconModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -// -// IconModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// - -import SwiftUI - -struct IconModel: Codable, Hashable { - var name: String - var file: String - var background: Bool -}
--- a/LazyBear/Models/InsiderSummaryModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -// -// InsiderSummaryModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -struct InsiderSummaryModel: Codable, Hashable { - var entityName: String - var position: Int? -}
--- a/LazyBear/Models/InsiderTranModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -// -// InsiderModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -struct InsiderTranModel: Codable, Hashable { - var directIndirect: String? - var transactionDate: String? - var fullName: String? - var postShares: Int? - var transactionCode: String? - var transactionPrice: Float? - var transactionShares: Int? - var transactionValue: Float? - -}
--- a/LazyBear/Models/KeyStatsModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -// -// KeyStatsModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/3/21. -// - -import SwiftUI - -struct KeyStatsModel: Hashable, Codable { - var Market_Cap: Double? - var Weeks52_High: Double? - var Weeks52_Low: Double? - var Shares: Double? - var Days10_Avg_Volume: Double? - var Days30_Avg_Volume: Double? - var Days200_Moving_Avg: Double? - var Days50_Moving_Avg: Double? - var Employees: Double? - var Trailing_EPS: Double? - var Trailing_Dividend_Rate: Double? - var Dividend_Yield: Double? - var Next_Dividend_Date: String? - var PE_Ratio: Double? - var Beta: Double? - - - // Custom keys - enum CodingKeys: String, CodingKey { - case Market_Cap = "marketcap" - case Weeks52_High = "week52high" - case Weeks52_Low = "week52low" - case Shares = "sharesOutstanding" - case Days10_Avg_Volume = "avg10Volume" - case Days30_Avg_Volume = "avg30Volume" - case Days200_Moving_Avg = "day200MovingAvg" - case Days50_Moving_Avg = "day50MovingAvg" - case Employees = "employees" - case Trailing_EPS = "ttmEPS" - case Trailing_Dividend_Rate = "ttmDividendRate" - case Dividend_Yield = "dividendYield" - case Next_Dividend_Date = "nextDividendDate" - case PE_Ratio = "peRatio" - case Beta = "beta" - } -} -
--- a/LazyBear/Models/NewsLanguageModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -// -// NewsLanguageModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// - -import SwiftUI - -struct NewsLanguageModel: Codable, Hashable { - var name: String - var code: String - var flag: String -}
--- a/LazyBear/Models/NewsModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -// -// NewsModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/2/21. -// - -import SwiftUI - -struct NewsModel: Codable, Hashable { - var datetime: Int? - var headline: String? - var source: String? - var url: String? - var summary: String? - var image: String? - var lang: String? -}
--- a/LazyBear/Models/PriceModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -// -// PriceModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 2/3/21. -// - -import SwiftUI - -struct PriceModel: Codable { - var latestPrice: Float? - var changePercent: Double? -}
--- a/LazyBear/Models/ThemeModel.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -// -// ThemeModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI - -struct ThemeModel: Hashable, Codable { - var name: String -}
--- a/LazyBear/Resources/alternativeIcons.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -[ - { - "name": "Default", - "file": "defaultIcon", - "background": false - }, - { - "name": "Blue", - "file": "blueIcon", - "background": false - }, - { - "name": "Green", - "file": "greenIcon", - "background": false - }, - { - "name": "Pink", - "file": "pinkIcon", - "background": false - }, - { - "name": "Red", - "file": "redIcon", - "background": false - }, - { - "name": "Matte black", - "file": "matteBlackIcon", - "background": true - }, - { - "name": "Matte white", - "file": "matteWhiteIcon", - "background": false - }, - { - "name": "Graffiti", - "file": "graffitiIcon", - "background": false - } -]
--- a/LazyBear/Resources/newsLanguages.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -[ - { - "name": "English", - "code": "en", - "flag": "🇺🇸" - }, - { - "name": "Spanish", - "code": "es", - "flag": "🇪🇸" - }, - { - "name": "Italian", - "code": "it", - "flag": "🇮🇹" - }, - { - "name": "French", - "code": "fr", - "flag": "🇫🇷" - }, - { - "name": "German", - "code": "de", - "flag": "🇩🇪" - }, - { - "name": "Portuguese", - "code": "pt", - "flag": "🇵🇹" - }, - { - "name": "Russian", - "code": "ru", - "flag": "🇷🇺" - } -]
--- a/LazyBear/Resources/themes.json Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -[ - { - "name": "Default" - }, - { - "name": "Summer" - }, - { - "name": "Basic" - }, - { - "name": "Earth" - }, - { - "name": "Forest" - }, - { - "name": "Multicolor" - }, - { - "name": "Nature" - }, - { - "name": "See" - } -]
--- a/LazyBear/Resources/transactionCodes.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -// -// transactionCodes.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -// General transaction codes for Form 4 -let transactionCodes: [String: String] = [ - "P": "Open market or private purchase of securities", - "S": "Open market or private sale of securities", - "V": "Transaction voluntarily reported earlier than required", - "A": "Grant, award, or other acquisition", - "D": "Sale (or disposition) back to the issuer of the securities", - "F": "Payment of exercise price or tax liability by delivering or withholding securities", - "I": "Discretionary transaction, which is an order to the broker to execute the transaction at the best possible price", - "M": "Exercise or conversion of derivative security", - "C": "Conversion of derivative security (usually options)", - "E": "Expiration of short derivative position (usually options)", - "H": "Expiration (or cancellation) of long derivative position with value received (usually options)", - "O": "Exercise of out-of-the-money derivative securities (usually options)", - "X": "Exercise of in-the-money or at-the-money derivatives securities (usually options)", - "G": "Bona fide gift form of any clauses", - "L": "Small acquisition", - "W": "Acquisition or disposition by will or laws of descent and distribution", - "Z": "Deposit into or withdrawal from voting trust", - "J": "Other acquisition or disposition (transaction described in footnotes)", - "K": "Transaction in equity swap or similar instrument", - "U": "Disposition due to a tender of shares in a change of control transaction", -]
--- a/LazyBear/UI/ActionView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -// -// ActionView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 8/3/21. -// - -import SwiftUI - -struct ActionView: View { - @EnvironmentObject var companyOption: CompanyOption - @EnvironmentObject var hudManager: HudManager - @Environment(\.colorScheme) var colorScheme // Detect dark mode - - var body: some View { - VStack(alignment: .leading) { - VStack(alignment: .leading) { - Group { - Button(action: { changeViewTo(.stock) }) { - Image(systemName: "chart.bar") - .frame(width: 50) - - Text("Stock & news") - Spacer() - } - .padding([.leading, .top, .trailing]) - - Divider() - .offset(x: 75) - - Button(action: { changeViewTo(.insiders) }) { - Image(systemName: "chart.pie") - .frame(width: 50) - - Text("Insider transactions") - Spacer() - } - .padding([.leading, .bottom, .trailing]) - } - .modifier(Title()) - } - .background( - colorScheme == .dark ? Color(red: 0.15, green: 0.17, blue: 0.18): Color(.white) - ) - .cornerRadius(20) - - Button(action: { self.hudManager.showAction = false }) { - Spacer() - Text("Cancel") - Spacer() - } - .modifier(Title()) - .padding() - .background( - colorScheme == .dark ? Color(red: 0.15, green: 0.17, blue: 0.18): Color(.white) - ) - .cornerRadius(20) - } - .frame(maxWidth: 500) - } - - private func changeViewTo(_ view: ViewType ) { - // Show view after one second. - // Give time to dismiss the Action View - self.hudManager.showAction = false - - if view == .stock { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - self.companyOption.view = .stock - - } - } else if view == .insiders { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - self.companyOption.view = .insiders - } - } - } -} - - -struct ActionView_Previews: PreviewProvider { - static var previews: some View { - ActionView() - } -} - -struct Title: ViewModifier { - func body(content: Content) -> some View { - content - .font(.title3) - .imageScale(.large) - .frame(maxWidth: .infinity) - } -} -
--- a/LazyBear/UI/ChartView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -// -// HistoricalPriceView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 21/2/21. -// - -import SwiftUI - -struct ChartView: View { - var symbol: String - @State private var historicalPrices = [HistoricalPriceModel]() - @EnvironmentObject var deviceSize: DeviceSize - - // Date picker - var period = ["1W", "1M", "3M", "6M", "1Y", "2Y", "5Y"] - @State var selectedPeriod = 2 - - // Line View - @State private var orientation: UIDeviceOrientation = UIDevice.current.orientation - @State var showingChartIndicator = false - @State var pointInPath: CGPoint = .zero - @State var indexValue = Int() - - - var body: some View { - let prices = historicalPrices.map { $0.close } - let dates = historicalPrices.map { $0.date } - let minutes = historicalPrices.map {$0.minute } - - VStack { - ZStack { - if showingChartIndicator { - PriceChartIndicator(prices: prices, dates: dates, minutes: minutes, indexValue: $indexValue) - } else { - DateSelection(period: period, selectedperiod: $selectedPeriod) - .padding(.horizontal) - .onChange(of: selectedPeriod, perform: { (value) in - let url = rangeEndpointSelector(value) - request(url: url, model: [HistoricalPriceModel].self) { self.historicalPrices = $0 } - }) - } - } - .frame(height: 40) - - let (width, height) = lineViewSize() - if !historicalPrices.isEmpty { - LineView(colour: lineViewColour(prices) ,width: width, height: height, normalizedData: normalize(prices), showingChartIndicator: $showingChartIndicator, pointInPath: $pointInPath, indexValue: $indexValue) - .frame(width: width, height: height) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0.0, y: 1.0, z: 0.0)) - .padding([.top, .bottom]) - // Detect changes on device orientation and upodate view - .onReceive(NotificationCenter.Publisher(center: .default, name: UIDevice.orientationDidChangeNotification)) { _ in - self.orientation = UIDevice.current.orientation - } - } - } - .onAppear { - self.selectedPeriod = 2 - let url = getUrl(endpoint: .historicalPrices, symbol: symbol, range: "3m") - request(url: url, model: [HistoricalPriceModel].self) { self.historicalPrices = $0 } - } - } - - private enum HistoricalInterval { - case oneWeek - case oneMonth - } - - private func selected(interval: HistoricalInterval) -> String { - switch interval { - case .oneWeek: - return "5dm" - case .oneMonth: - return "1mm" - } - } - - private func rangeEndpointSelector(_ value: Int) -> String { - var url = "" - - if selectedPeriod == 0 { // 1 week - url = getUrl(endpoint: .historicalPrices, symbol: symbol, range: selected(interval: .oneWeek)) - } else if selectedPeriod == 1 { // 1 month - url = getUrl(endpoint: .historicalPrices, symbol: symbol, range: selected(interval: .oneMonth)) - } else { // The rest - url = getUrl(endpoint: .historicalPrices, symbol: symbol, range: period[value]) - } - - return url - } - - private func lineViewColour(_ prices: [Double]) -> Color { - var colour = Color(.systemGreen) - - let firstPrice = prices[0] - let lastPrice = prices.last - - if lastPrice! < firstPrice { - colour = Color(.systemRed) - } - - return colour - } - - private func lineViewSize() -> (CGFloat, CGFloat) { - var width = deviceSize.width - var height = width / 3 - - // if running on iPad - if UIDevice.current.userInterfaceIdiom == .pad { - height = width / 6 - if orientation.isLandscape { - width = deviceSize.height - height = width / 6 - } - } - - return (width, height) - } -} - -struct HistoricalPriceView_Previews: PreviewProvider { - static var previews: some View { - ChartView(symbol: "aapl") - } -}
--- a/LazyBear/UI/CompanyRow.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// -// CompanyRow.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI - -struct CompanyRow: View { - var symbol: String - var name: String - var rowNumber: Int - var showPrice: Bool - - var body: some View { - HStack { - SideColor(rowNumber: rowNumber) - VStack(alignment: .leading) { - Text(symbol.uppercased()) - .fontWeight(.semibold) - - Text(name.capitalized) - .lineLimit(1) - } - - Spacer() - if showPrice { - PriceView(symbol: symbol, showVertical: true) - } - } - } -} - -struct Row_Previews: PreviewProvider { - static var previews: some View { - List { - CompanyRow(symbol: "aapl", name: "apple inc", rowNumber: 2, showPrice: true) - } - } -}
--- a/LazyBear/UI/CompanyView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -// -// CompanyView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI - -enum ViewType { - case stock, insiders -} - -struct CompanyView: View { - var name: String - var symbol: String - @State private var scale: CGFloat = 1 - @EnvironmentObject var hudManager: HudManager - @EnvironmentObject var companyOption: CompanyOption - @EnvironmentObject var hapticsManager: HapticsManager - @Environment(\.managedObjectContext) private var moc - @FetchRequest(entity: Company.entity(), sortDescriptors: []) var companies: FetchedResults<Company> - - var body: some View { - ScrollView { - if companyOption.view == .stock { - PriceView(symbol: symbol, showVertical: false) - ChartView(symbol: symbol) - KeyStatsView(symbol: symbol) - NewsView(symbol: symbol) - - } else if companyOption.view == .insiders { - InsiderSummary(symbol: symbol) - InsiderTransactions(symbol: symbol) - } - } - .onAppear { companyOption.view = .stock } - .toolbar { - ToolbarItem(placement: .principal) { - Button(action: { self.hudManager.showAction.toggle(); hapticsManager.complexSuccess()}) { - HStack { - if companyOption.view == .stock { - Text("Stock") - } else if companyOption.view == .insiders { - Text("Insiders") - } - Image(systemName: "chevron.down") - } - } - } - - ToolbarItem(placement: .navigationBarTrailing) { - let symbols = companies.map { $0.symbol } - if !symbols.contains(symbol) { - Button(action: { addCompany() }) { - Image(systemName: "star") - } - .scaleEffect(scale) - .animation(.easeIn) - - } else { - Button(action: { removeCompany() }) { - Image(systemName: "star.fill") - } - } - } - } - } - - // Add to watchlist - private func addCompany() { - let company = Company(context: moc) - company.symbol = symbol - company.name = name - do { - try moc.save() - hudManager.selectHud(type: .notification) - hapticsManager.simpleSuccess() - print("Company saved") - } catch { - print(error.localizedDescription) - } - } - - private func removeCompany() { - let symbols = companies.map { $0.symbol } - let index = symbols.firstIndex(of: symbol) - let company = companies[index!] - moc.delete(company) - do { - try moc.save() - print("Company deleted") - } catch { - // Error - } - } -} - -struct CompanyView_Previews: PreviewProvider { - static var previews: some View { - NavigationView { - CompanyView(name: "apple inc", symbol: "aapl") - .environmentObject(HudManager()) - .environmentObject(CompanyOption()) - .navigationTitle("APPL") - } - .navigationViewStyle(StackNavigationViewStyle()) - } -}
--- a/LazyBear/UI/DateSelection.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// -// DateSelection.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 27/2/21. -// - -import SwiftUI - -struct DateSelection: View { - var period: [String] - @Binding var selectedperiod: Int - - var body: some View { - Picker(selection: $selectedperiod, label: Text("Please choose a period")) { - ForEach(0 ..< period.count) { - Text(self.period[$0]) - } - } - .pickerStyle(SegmentedPickerStyle()) - } -} - -struct DateSelection_Previews: PreviewProvider { - static var previews: some View { - DateSelection(period: ["1W", "1M", "3M", "6M", "1Y", "2Y", "5Y"], selectedperiod: .constant(0)) - } -}
--- a/LazyBear/UI/HorizontalBar.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -// -// HorizontalBar.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/3/21. -// - -import SwiftUI - -struct HorizontalBar: View { - @State var text: String - @State var data: Int - @State var capsulePctWidth: CGFloat // 0.3 = 30% - // How much large the data capsule is with respect to the placeholder capsule - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - - var body: some View { - VStack(alignment: .leading) { - HStack { - Text(text.capitalized) - .font(.headline) - - Spacer() - Text("\(data) shares") - } - ZStack { - GeometryReader { geo in - Group { - Capsule() - .foregroundColor(Color(.systemGray)) - .opacity(0.2) - - Capsule() - .foregroundColor(Color("\(userSettings.first?.theme?.lowercased() ?? "default")Accent")) - .frame(width: geo.size.width * capsulePctWidth) - } - .frame(height: 10) - } - } - } - } -} - -struct HorizontalBar_Previews: PreviewProvider { - static var previews: some View { - HorizontalBar(text: "Dennis Concepción", data: 1000, capsulePctWidth: 0.3) - } -}
--- a/LazyBear/UI/IconPicker.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -// -// IconPicker.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// - -import SwiftUI - -struct IconPicker: View { - var body: some View { - List { - Section(header: Text("White background")) { - ForEach(icons, id: \.name) { icon in - if !icon.background { - IconRow(icon: icon) - } - } - } - - Section(header: Text("Black background")) { - ForEach(icons, id: \.name) { icon in - if icon.background { - IconRow(icon: icon) - } - } - } - } - .listStyle(GroupedListStyle()) - } -} - -struct IconRow: View { - @Environment(\.colorScheme) var colorScheme // Detect dark mode - @EnvironmentObject var hapticsManager: HapticsManager - var icon: IconModel - - var body: some View { - Button(action: { hapticsManager.complexSuccess(); changeIcon(key: icon.file) }) { - HStack { - Image(icon.file) - .resizable() - .cornerRadius(20) - .frame(width: 70, height: 70) - - Text(icon.name) - .foregroundColor(colorScheme == .dark ? .white: .black) - } - } - } - - private func changeIcon(key: String) { - if key != "defaultIcon" { - UIApplication.shared.setAlternateIconName(key) { error in - if let error = error { - print(error.localizedDescription) - } else { - print("Success!") - } - } - } else { - UIApplication.shared.setAlternateIconName(nil) - } - } -} - -struct IconPicker_Previews: PreviewProvider { - static var previews: some View { - NavigationView { - IconPicker() - - } - } -}
--- a/LazyBear/UI/IexAttribution.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -// -// IexAttribution.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 2/3/21. -// - -import SwiftUI - -struct IexAttribution: View { - var text: String - - var body: some View { - Link(destination: URL(string: "https://iexcloud.io")!) { - Text(text) - .font(.caption) - .opacity(0.6) - - } - } -} - -struct IexAttribution_Previews: PreviewProvider { - static var previews: some View { - IexAttribution(text: "IEX Cloud") - } -}
--- a/LazyBear/UI/IndicatorPoint.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// -// IndicatorPoint.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 17/3/21. -// - -import SwiftUI - -struct IndicatorPoint: View { - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - - var body: some View { - let colour = Color("\(userSettings.first?.theme?.lowercased() ?? "default")Accent") - Circle() - .frame(width: 20, height: 20) - .foregroundColor(colour) - } -} - -struct IndicatorPoint_Previews: PreviewProvider { - static var previews: some View { - IndicatorPoint() - } -}
--- a/LazyBear/UI/InsiderSummary.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -// -// InsiderSummary.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -struct InsiderSummary: View { - var symbol: String - @State private var insiderSummary = [InsiderSummaryModel]() - - var body: some View { - let maxPosition = insiderSummary.map { ($0.position ?? 0) }.max() - VStack(alignment: .leading) { - HStack { - Text("Top insiders") - .font(.title) - .fontWeight(.semibold) - - Spacer() - } - .padding(.bottom) - - ForEach(insiderSummary.indices, id: \.self) { index in - if index < 3 { // Number of rows that I want to show - let name = insiderSummary[index].entityName - let position = insiderSummary[index].position ?? 1 - let pct = getPercentage(maxPosition ?? 1, position) - HorizontalBar(text: name, data: position, capsulePctWidth: pct) - } - } - } - .padding() - .onAppear { - let url = getUrl(endpoint: .insiderSummary, symbol: symbol) - request(url: url, model: [InsiderSummaryModel].self) { self.insiderSummary = $0 } - } - } - - private func getPercentage(_ maxValue: Int, _ value: Int) -> CGFloat { - let pct = Double(value) / Double(maxValue) - - return CGFloat(pct) - } -} - -struct InsiderSummary_Previews: PreviewProvider { - static var previews: some View { - InsiderSummary(symbol: "aapl") - } -}
--- a/LazyBear/UI/InsiderTransactions.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -// -// InsiderTransactions.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -struct InsiderTransactions: View { - var symbol: String - @State private var transactions = [InsiderTranModel]() - - var body: some View { - VStack(alignment: .leading) { - if !transactions.isEmpty { - HStack { - Text("Latest transactions") - .font(.title) - .fontWeight(.semibold) - - Spacer() - } - .padding(.horizontal) - } - - ForEach(transactions.reversed(), id: \.self) { trans in - TransactionRow(transaction: trans) - .padding(.horizontal) - .padding(.vertical, 5) - - Divider() - } - } - .onAppear { - let url = getUrl(endpoint: .insiderTransactions, symbol: symbol) - request(url: url, model: [InsiderTranModel].self) { self.transactions = $0 } - } - } -} - -struct InsiderTransactions_Previews: PreviewProvider { - static var previews: some View { - InsiderTransactions(symbol: "aapl") - } -}
--- a/LazyBear/UI/KeyStatComponent.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -// -// KeyStatComponent.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/3/21. -// - -import SwiftUI - -enum CustomStatLabel { - -} - -struct KeyStatComponent: View { - var text: String - var data: Any - - var body: some View { - HStack { - let cleanText = text.replacingOccurrences(of: "_", with: " ") - Text(cleanText) - .font(.caption) - .fontWeight(.semibold) - - // Check type of data - if let dataString = data as? String { - if dataString.isEmpty { - Text("-") - .font(.caption) - } else { - Text(dataString) - .font(.caption) - } - } else if let dataNumber = data as? Double { - Text("\(dataNumber, specifier: "%.2f")") - .font(.caption) - } - } - .padding(10) - .background( - Capsule() - .foregroundColor(.white) - .shadow(color: .gray, radius: 5, x: 0.0, y: 0.0).opacity(0.3) - ) - } -} - -struct KeyStatComponent_Previews: PreviewProvider { - static var previews: some View { - KeyStatComponent(text: "Market cap", data: 123456.00) - } -}
--- a/LazyBear/UI/KeyStatsDetail.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -// -// KeyStatsDetail.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/3/21. -// - -import SwiftUI - -struct KeyStatsDetail: View { - var keyStats: KeyStatsModel - - var body: some View { - NavigationView { - Form { - FirstSection(keyStats: keyStats) - SecondSection(keyStats: keyStats) - ThirdSection(keyStats: keyStats) - } - .navigationTitle("Key statistics") - } - } -} - -struct StatCell: View { - var icon: String? - var text: String - var data: Any - - var body: some View { - HStack { - if let symbol = icon { - Image(systemName: symbol) - } - Text(text) - .font(.headline) - if let numData = data as? Double { - Text("\(numData, specifier: "%.2f")") - } else if let stringData = data as? String { - Text(stringData) - } - } - } -} - -struct FirstSection: View { - var keyStats: KeyStatsModel - - var body: some View { - Section(header: Text("About the company")) { - if let employees = keyStats.Employees { - StatCell(icon: nil, text: "Employees: ", data: employees) - } - if let marketCap = keyStats.Market_Cap { - StatCell(icon: nil, text: "Market cap:", data: marketCap) - } - if let shares = keyStats.Shares { - StatCell(icon: nil, text: "Shares outstanding: ", data: shares) - } - } - } -} - -struct SecondSection: View { - var keyStats: KeyStatsModel - - var body: some View { - Section(header: Text("About the stock")) { - if let beta = keyStats.Beta { - StatCell(icon: nil, text: "Beta: ", data: beta) - } - if let peRatio = keyStats.PE_Ratio { - StatCell(icon: nil, text: "P/E Ratio: ", data: peRatio) - } - if let trailingEps = keyStats.Trailing_EPS { - StatCell(icon: nil, text: "Trailing EPS: ", data: trailingEps) - } - if let dividendYield = keyStats.Dividend_Yield { - StatCell(icon: nil, text: "Dividend yield in %: ", data: dividendYield*100) - } - if let nextDividendDate = keyStats.Next_Dividend_Date { - StatCell(icon: nil, text: "Next dividend date: ", data: nextDividendDate) - } - if let trailingDividendRate = keyStats.Trailing_Dividend_Rate { - StatCell(icon: nil, text: "Trailing dividend rate: ", data: trailingDividendRate) - } - } - } -} - -struct ThirdSection: View { - var keyStats: KeyStatsModel - - var body: some View { - Section(header: Text("Technical analysis")) { - if let weeks52low = keyStats.Weeks52_Low { - StatCell(icon: nil, text: "52 weeks low: ", data: weeks52low) - } - if let weeks52High = keyStats.Weeks52_High { - StatCell(icon: nil, text: "52 weeks high: ", data: weeks52High) - } - if let days10AvgVolume = keyStats.Days10_Avg_Volume { - StatCell(icon: nil, text: "10 days average volume: ", data: days10AvgVolume) - } - if let days30AvgVolume = keyStats.Days30_Avg_Volume { - StatCell(icon: nil, text: "30 days average volume: ", data: days30AvgVolume) - } - if let days200MovingAvg = keyStats.Days200_Moving_Avg { - StatCell(icon: nil, text: "200 days moving average: ", data: days200MovingAvg) - } - if let days50MovingAvg = keyStats.Days50_Moving_Avg { - StatCell(icon: nil, text: "50 days moving average: ", data: days50MovingAvg) - } - } - } -} - -struct KeyStatsDetail_Previews: PreviewProvider { - static var previews: some View { - KeyStatsDetail(keyStats: KeyStatsModel(Market_Cap: 100000, Weeks52_High: 12, Weeks52_Low: 12, Shares: 13334434, Days10_Avg_Volume: 12, Days30_Avg_Volume: 12, Days200_Moving_Avg: 12, Days50_Moving_Avg: 12, Employees: 12345, Trailing_EPS: 12, Trailing_Dividend_Rate: 12, Dividend_Yield: 0.07, Next_Dividend_Date: "2020-02-02", PE_Ratio: 12, Beta: 12)) - } -}
--- a/LazyBear/UI/KeyStatsView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -// -// KeyStatsView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/3/21. -// - -import SwiftUI - -struct KeyStatsView: View { - var symbol: String - @Environment(\.colorScheme) var colorScheme // Detect dark mode - @State private var keyStats = KeyStatsModel() - @State var showingDetail = false - - var body: some View { - ScrollView(.horizontal, showsIndicators: false) { - HStack(spacing: 20) { - let keys = Array(mirrorStructure().keys) - let values = Array(mirrorStructure().values) - ForEach(keys.indices, id: \.self) { index in - Button(action: { self.showingDetail = true }) { - KeyStatComponent(text: keys[index], data: values[index]) - } - .foregroundColor(colorScheme == .dark ? .white: .black) - } - Button(action: { self.showingDetail = true }) { - Text("See more ratios") - .font(.caption) - .fontWeight(.semibold) - } - } - .padding() - } - .sheet(isPresented: $showingDetail) { - KeyStatsDetail(keyStats: keyStats) - } - .onAppear { - let url = getUrl(endpoint: .keyStats, symbol: symbol) - request(url: url, model: KeyStatsModel.self) { result in - self.keyStats = result - } - } - } - - // Get an array with all the stats from the struct - func mirrorStructure() -> ([String: Any]) { - let mirrorKeyStats = Mirror(reflecting: keyStats) - var statsDict = [String: Any]() - - for stat in mirrorKeyStats.children { - if let numValue = stat.value as? Double { - statsDict[stat.label!] = numValue - } else if let stringValue = stat.value as? String { - statsDict[stat.label!] = stringValue - } - } - - return statsDict - } -} - -struct KeyStatsView_Previews: PreviewProvider { - static var previews: some View { - KeyStatsView(symbol: "aapl") - } -}
--- a/LazyBear/UI/LanguagePicker.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// -// NewsLanguagePicker.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// - -import SwiftUI - -struct LanguagePicker: View { - @Environment(\.managedObjectContext) private var moc - @EnvironmentObject var hapticsManager: HapticsManager - @State var language: String - - var body: some View { - Picker("News language", selection: $language) { - ForEach(newsLanguages, id: \.code) { language in - Text("\(language.flag) \(language.name)") - .tag(language.code) - } - } - .onChange(of: language, perform: { language in - save(change: language) - }) - } - - private func save(change: Any) { - let userSettings = UserSettings(context: moc) - userSettings.changedAt = Date() - userSettings.newsLanguage = change as? String - do { - try moc.save() - hapticsManager.complexSuccess() - print("Settings saved") - } catch { - print(error.localizedDescription) - } - } -} - -struct NewsLanguagePicker_Previews: PreviewProvider { - static var previews: some View { - LanguagePicker(language: "en") - } -}
--- a/LazyBear/UI/LineView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -// -// LineView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 15/3/21. -// - -import SwiftUI - -struct LineView: View { - var colour: Color - var width: CGFloat - var height: CGFloat - var normalizedData: [Double] - - // Drag gesture - @Binding var showingChartIndicator: Bool - @Binding var pointInPath: CGPoint - @Binding var indexValue: Int - - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - @EnvironmentObject var hapticsManager: HapticsManager - - var body: some View { - let colour = Color("\(userSettings.first?.theme?.lowercased() ?? "default")Accent") - - // Substract 2 to skip the first and the last item - let widthBetweenPoints = Double(width) / Double(normalizedData.count - 2) - let initialPoint = normalizedData[0] * Double(height) - var x: Double = 0 - var pathPoints = [CGPoint]() - - ZStack { - GeometryReader { geo in - Path { path in - path.move(to: CGPoint(x: x, y: initialPoint)) - for y in normalizedData { - // Skip first item - if normalizedData.firstIndex(of: y) != 0 { - x += widthBetweenPoints - let y = y * Double(height) - path.addLine(to: CGPoint(x: x, y: y)) - } - - pathPoints.append(path.currentPoint!) - } - } - .stroke(self.showingChartIndicator ? colour: self.colour, lineWidth: 2) - - if showingChartIndicator { - IndicatorPoint() - .position(x: pointInPath.x, y: pointInPath.y) - } - } - } - .contentShape(Rectangle()) // Control tappable area - .gesture( - LongPressGesture(minimumDuration: 0.2) - .sequenced(before: DragGesture(minimumDistance: 0, coordinateSpace: .local)) - .onChanged({ value in // Take value of the gesture - switch value { - // Start the second gesture -> Drag() - case .second(true, let drag): - if let longPressLocation = drag?.location { - let (closestXPoint, closestYPoint, yPointIndex) = getClosestValueFrom(longPressLocation, inData: pathPoints) - self.pointInPath.x = closestXPoint - self.pointInPath.y = closestYPoint - self.showingChartIndicator = true - self.indexValue = yPointIndex - } else { - hapticsManager.simpleSuccess() - } - default: - break - } - }) - .onEnded({ value in - self.showingChartIndicator = false - }) - ) - } - - // First search the closest X path point from the touch location. The find the correspondant Y path point - // given the X path point - func getClosestValueFrom(_ value: CGPoint, inData: [CGPoint]) -> (CGFloat, CGFloat, Int) { - let touchPoint: (CGFloat, CGFloat) = (value.x, value.y) - let xPathPoints = inData.map { $0.x } - let yPathPoints = inData.map { $0.y } - - // Closest X value - let closestXPoint = xPathPoints.enumerated().min( by: { abs($0.1 - touchPoint.0) < abs($1.1 - touchPoint.0) } )! - let closestYPointIndex = xPathPoints.firstIndex(of: closestXPoint.element)! - let closestYPoint = yPathPoints[closestYPointIndex] - - // Index of the closest points in the array - let yPointIndex = yPathPoints.firstIndex(of: closestYPoint)! - - return (closestXPoint.element, closestYPoint, yPointIndex) - } -} - -struct LineView_Previews: PreviewProvider { - static var previews: some View { - GeometryReader { geo in - VStack { - let normalizedData: [Double] = [0, 0.1, 0.15, 0.2, 0.3, 0.4, 0.35, 0.38, 0.5, 0.55, 0.6, 0.57, 0.8, 1] - LineView(colour: Color(.systemGreen), width: geo.size.width, height: geo.size.width / 2, normalizedData: normalizedData, showingChartIndicator: .constant(false), pointInPath: .constant(.zero), indexValue: .constant(0)) - } - } - } -}
--- a/LazyBear/UI/NewsRow.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -// -// NewsRow.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/2/21. -// - -import SwiftUI -import SDWebImageSwiftUI - -struct NewsRow: View { - var new: NewsModel - @State private var showingSafari = false - @Environment(\.colorScheme) var colorScheme // Detect dark mode - - var body: some View { - Button(action: { self.showingSafari = true }) { - VStack(alignment: .leading) { - // If iPad show Image - if UIDevice.current.userInterfaceIdiom == .pad { - WebImage(url: URL(string: new.image ?? "")) - .resizable() - .placeholder { } - .indicator(.activity) - .aspectRatio(contentMode: .fit) - .cornerRadius(UIDevice.current.userInterfaceIdiom == .pad ? 10: 0) - } - - if let source = new.source { - Text(source.uppercased()) - .font(.caption) - .opacity(0.5) - - } - - if let headline = new.headline { - Text(headline) - .font(.headline) - .lineLimit(UIDevice.current.userInterfaceIdiom == .pad ? nil: 4) - } - - if let summary = new.summary { - Text(summary) - .opacity(0.5) - .font(.subheadline) - .lineLimit(UIDevice.current.userInterfaceIdiom == .pad ? 10: 1) - .padding(.bottom, 5) - } - - if (new.datetime != nil) { - let humanDate = convertDate() - Text("\(humanDate) ago") - .font(.caption2) - .opacity(0.5) - } - } - } - .foregroundColor(colorScheme == .dark ? .white: .black) - .sheet(isPresented: $showingSafari) { - SafariView(url:URL(string: new.url ?? "")!) - } - } - - // Convert Epoch time to human date - private func convertDate() -> String { - let now = Date() // Current date - // Time when the article was published. Divide new.datetime by 1,000 because - // TimeInterval() function must be in seconds, not in miliseconds - let articlePublished = Date(timeIntervalSince1970: TimeInterval(new.datetime ?? 0)/1000) - let formatter = DateComponentsFormatter() - formatter.unitsStyle = .full - let humanDate = formatter.string(from: articlePublished, to: now)! - - return humanDate - } -} - -struct NewsRow_Previews: PreviewProvider { - static var previews: some View { - NewsRow(new: NewsModel(datetime: 1613838000000, headline: "As Facebook, Microsoft, Apple, Uber, Amazon, and others play larger roles in OpenStreetMap, hobbyists fear private sector will overshadow their work (Corey Dickinson/Bloomberg)", source: "Techmeme", url: "https://cloud.iexapis.com/v1/news/article/d760b0bc-42f0-4ed0-a721-a7691eeaa132", summary: "Corey Dickinson / Bloomberg : As Facebook, Microsoft, Apple, Uber, Amazon, and others play larger roles in OpenStreetMap, hobbyists fear private sector will overshadow their work — What do Lyft, Facebook, the International Red Cross, the U.N., the government of Nepal and Pokémon Go have in common?", image: "https://cloud.iexapis.com/v1/news/image/d760b0bc-42f0-4ed0-a721-a7691eeaa132")) - } -}
--- a/LazyBear/UI/NewsView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -// -// NewsView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/2/21. -// - -import SwiftUI -import WaterfallGrid - -struct NewsView: View { - var symbol: String - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - @State private var news = [NewsModel]() - - var body: some View { - VStack(alignment: .leading) { - if !news.isEmpty { - HStack { - Text("Recent news") - .font(.title) - .fontWeight(.semibold) - - Spacer() - } - .padding([.horizontal, .bottom]) - } - - let language = userSettings.first?.newsLanguage ?? "en" - let filteredNews = news.filter { $0.lang == language } - - // If iPhone - if UIDevice.current.userInterfaceIdiom == .phone { - ForEach(filteredNews, id: \.self) { new in - NewsRow(new: new) - .padding(.horizontal) - - Divider() - - } - } - - // If iPad - if UIDevice.current.userInterfaceIdiom == .pad { - WaterfallGrid(filteredNews, id: \.self) { new in - NewsRow(new: new) - } - .gridStyle( - columnsInPortrait: 2, - columnsInLandscape: 3, - spacing: 8, - animation: .easeInOut - ) - .padding(EdgeInsets(top: 16, leading: 8, bottom: 16, trailing: 8)) - } - } - .onAppear { - let url = getUrl(endpoint: .news, symbol: symbol) - request(url: url, model: [NewsModel].self) { self.news = $0 } - } - } -} - - -struct NewsView_Previews: PreviewProvider { - static var previews: some View { - NewsView(symbol: "aapl") - } -}
--- a/LazyBear/UI/Notification.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// -// Notification.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 21/2/21. -// - -import SwiftUI - -struct Notification: View { - var text: String - var image: String - - var body: some View { - Label(text, systemImage: image) - .foregroundColor(.gray) - .padding(.horizontal, 10) - .padding(14) - .background( - Blur(style: .systemMaterial) - .clipShape(Capsule()) - .shadow(color: Color(.black).opacity(0.22), radius: 12, x: 0, y: 5) - ) - } -} - -struct Blur: UIViewRepresentable { - var style: UIBlurEffect.Style - - func makeUIView(context: Context) -> UIVisualEffectView { - return UIVisualEffectView(effect: UIBlurEffect(style: style)) - } - - func updateUIView(_ uiView: UIVisualEffectView, context: Context) { - uiView.effect = UIBlurEffect(style: style) - } -}
--- a/LazyBear/UI/PriceChartIndicator.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -// -// PriceChartIndicator.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 18/3/21. -// - -import SwiftUI - -struct PriceChartIndicator: View { - var prices: [Double] - var dates: [String] - var minutes: [String?] - @Binding var indexValue: Int - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - - var body: some View { - let colour = Color("\(userSettings.first?.theme?.lowercased() ?? "default")Accent") - HStack { - Group { - let date = convertStringToDate(dates[indexValue]) - Text(date) - if let minute = minutes[indexValue] { - Text(minute) - } - Text("\(prices[indexValue], specifier: "%.2f")") - .foregroundColor(colour) - } - .font(.subheadline) - } - } -} - -struct PriceChartIndicator_Previews: PreviewProvider { - static var previews: some View { - PriceChartIndicator(prices: [100, 50], dates: ["10-10-2020", "11-10-2020"], minutes: ["9:02", "9:03"], indexValue: .constant(0)) - } -}
--- a/LazyBear/UI/PriceView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -// -// PriceView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 20/2/21. -// - -import SwiftUI - -struct PriceView: View { - var symbol: String - var showVertical: Bool - @State private var price = PriceModel() - @State private var timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() // Set recurrent price request - - var body: some View { - let latestPrice = price.latestPrice ?? 0 - let changePercent = price.changePercent ?? 0 - VStack { - if showVertical { - VStack(alignment: .trailing) { - Text("\(latestPrice, specifier: "%.2f")") - .fontWeight(.semibold) - .padding(.horizontal) - - Text("\(changePercent*100, specifier: "%.2f")%") - .foregroundColor(changePercent < 0 ? Color(.systemRed) : Color(.systemGreen)) - .padding(.trailing) - } - } else { - HStack { - Text("\(latestPrice, specifier: "%.2f")") - .font(.title3) - .fontWeight(.bold) - .padding(.horizontal) - - Text("\(changePercent*100, specifier: "%.2f")%") - .font(.headline) - .foregroundColor(changePercent < 0 ? Color(.systemRed) : Color(.systemGreen)) - .padding(.trailing) - - Spacer() - } - } - } - .onReceive(timer) { _ in call(); print("requested") } - .onAppear { - call() - self.timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() // Restart timer - } - .onDisappear { self.timer.upstream.connect().cancel() } // Stop timer - } - - private func call() { - let url = getUrl(endpoint: .quote, symbol: symbol) - request(url: url, model: PriceModel.self) { result in - self.price = result - } - } -} - - -struct PriceView_Previews: PreviewProvider { - static var previews: some View { - PriceView(symbol: "aapl", showVertical: false) - } -}
--- a/LazyBear/UI/SafariView.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -// -// SafariView.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 13/3/21. -// - -import SwiftUI -import SafariServices - -struct SafariView: UIViewControllerRepresentable { - let url: URL - - func makeUIViewController(context: UIViewControllerRepresentableContext<SafariView>) -> SFSafariViewController { - return SFSafariViewController(url: url) - } - - func updateUIViewController(_ uiViewController: SFSafariViewController, context: UIViewControllerRepresentableContext<SafariView>) { - - } - -}
--- a/LazyBear/UI/Search.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -// -// Search.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI -import SwiftlySearch - -struct Search: View { - @EnvironmentObject var hudManager: HudManager - @State private var company = String() - @State private var companies = [CompanyModel]() - - var body: some View { - NavigationView { - let list = filterList() - List(list.indices, id: \.self) { i in - let name = list[i].securityName ?? "-" - let symbol = list[i].symbol - NavigationLink(destination: CompanyView(name: name, symbol: symbol) - .navigationTitle(symbol) - ) { - CompanyRow(symbol: symbol, name: name, rowNumber: i % 5, showPrice: true) - } - } - .navigationBarSearch(self.$company) - .onChange(of: company, perform: { company in - request(url: getUrl(), model: [CompanyModel].self) { self.companies = $0 } - }) - .navigationTitle("Search") - } - .navigationViewStyle(StackNavigationViewStyle()) - - // Empty list - .onDisappear { self.companies = [CompanyModel]() } - } - - private func getUrl() -> String { - let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url" - let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key" - let encodedCompanyName = company.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) - let url = "\(baseUrl)/search/\(encodedCompanyName!)?token=\(apiKey)" - - return url - } - - private func filterList() -> [CompanyModel] { - // Exclude symbols with "-" and numbers -> they are secondary stock symbols - // of the same company but different market. Currently, not interested in them. - let decimalCharacters = CharacterSet.decimalDigits - let filteredCompanies = companies.filter { - $0.symbol.rangeOfCharacter(from: decimalCharacters) == nil && // Exclude symbols with numbers - !$0.symbol.contains("-") // Exclude symbols with "-" - } - - return filteredCompanies - } -} - -struct Search_Previews: PreviewProvider { - static var previews: some View { - Search() - } -}
--- a/LazyBear/UI/SettingRow.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -// -// SettingRow.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// - -import SwiftUI - -struct SettingRow: View { - // Should pass @State because if not preview crashes - @State var image: String - @State var text: String - @State var colour: UIColor - - var body: some View { - HStack { - Image(systemName: image) - .foregroundColor(.white) - .padding(3) - .background(Color(colour) - .cornerRadius(4) - .frame(width: 30, height: 30) - ) - - Text(text) - .padding(.horizontal, 7) - } - } -} - -struct SettingRow_Previews: PreviewProvider { - static var previews: some View { - SettingRow(image: "at", text: "About", colour: .systemBlue) - } -}
--- a/LazyBear/UI/Settings.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -// -// Settings.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI -import CoreData - -struct Settings: View { - let setting = SettingMetadata() - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - @Environment(\.colorScheme) var colorScheme // Detect dark mode - @State private var showingSafari = false - - var body: some View { - NavigationView { - Form { - ThemePicker(theme: userSettings.first?.theme ?? "Default") - LanguagePicker(language: userSettings.first?.newsLanguage ?? "en") - NavigationLink(destination: IconPicker()) { - Text("App icon") - } - - Section(footer: IexAttribution(text: "Data provided by IEX Cloud").padding(.top)) { - ForEach((0...3), id: \.self) { index in - Button(action: { self.showingSafari = true }) { - HStack { - SettingRow(image: setting.images[index], text: setting.texts[index], colour: setting.colours[index]) - FakeLinkArrow() - } - } - .foregroundColor(colorScheme == .dark ? .white: .black) - .sheet(isPresented: $showingSafari) { - SafariView(url:URL(string: setting.links[index])!) - } - - } - } - } - .navigationTitle("Settings") - } - .navigationViewStyle(StackNavigationViewStyle()) - } -} - -struct FakeLinkArrow: View { - var body: some View { - Spacer() - Image(systemName: "chevron.right") - .font(Font.body.weight(.semibold)) - .imageScale(.small) - .opacity(0.2) - } -} - -class SettingMetadata { - var links = ["https://lazybear.app", - "https://apps.apple.com/us/app/lazybear/id1534612943", - "https://github.com/DennisTechnologies/Lazybear-App/issues", - "https://github.com/DennisTechnologies/Lazybear-App/discussions"] - - var images = ["at", "suit.heart.fill", "ladybug.fill", "message.fill"] - var texts = ["About", "Rate Lazybear", "Bug tracker", "Community"] - var colours: [UIColor] = [.systemBlue, .systemRed, .systemYellow, .systemTeal] -} - - -struct Settings_Previews: PreviewProvider { - static var previews: some View { - return Settings() - } -}
--- a/LazyBear/UI/SideColor.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// -// SideColor.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -struct SideColor: View { - var rowNumber: Int - - @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) - var userSettings: FetchedResults<UserSettings> - - var body: some View { - let theme = userSettings.first?.theme?.lowercased() ?? "default" - RoundedRectangle(cornerRadius: 15) - .foregroundColor(Color("\(theme)Row\(rowNumber)")) - .frame(width: 5) - } -} - -struct SideColor_Previews: PreviewProvider { - static var previews: some View { - SideColor(rowNumber: 2) - } -}
--- a/LazyBear/UI/ThemePicker.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -// -// ThemePicker.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// - -import SwiftUI - -struct ThemePicker: View { - @Environment(\.managedObjectContext) private var moc - @EnvironmentObject var hapticsManager: HapticsManager - @State var theme: String - - var body: some View { - Picker("Themes", selection: $theme) { - ForEach(themes, id: \.name) { theme in - HStack { - RoundedRectangle(cornerRadius: 4) - .frame(width: 20, height: 20) - .foregroundColor(Color("\(theme.name.lowercased())Accent")) - - Text(theme.name) - .tag(theme.name) - } - } - } - .onChange(of: theme, perform: { theme in - save(change: theme) - }) - } - - private func save(change: Any) { - let userSettings = UserSettings(context: moc) - userSettings.changedAt = Date() - userSettings.theme = change as? String - do { - try moc.save() - hapticsManager.complexSuccess() - print("Settings saved") - } catch { - print(error.localizedDescription) - } - } -} - -struct ThemePicker_Previews: PreviewProvider { - static var previews: some View { - NavigationView { - Form { - ThemePicker(theme: "Default") - } - .navigationBarHidden(true) - } - } -}
--- a/LazyBear/UI/TransactionDetail.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -// -// TransactionDetail.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 7/3/21. -// - -import SwiftUI - -struct TransactionDetail: View { - var transaction: InsiderTranModel - - var body: some View { - NavigationView { - Form { - Section(header: Text("Insider information")) { - HStack { - Image(systemName: "person.fill") - Text(transaction.fullName?.capitalized ?? "-") - } - - if let postShares = transaction.postShares { - HStack { - Image(systemName: "number") - Text("\(postShares) shares owned") - } - } - } - - Section(header: Text("Transaction information")) { - HStack { - Image(systemName: "calendar") - Text(transaction.transactionDate ?? "-") - } - - let direcIndirect = transaction.directIndirect ?? "-" - if direcIndirect == "D" { - Text("Direct transaction") - } else if direcIndirect == "I" { - Text("Indirect transaction") - } - - if let tranPrice = transaction.transactionPrice { - Text(String(format: "Price per share: $%.2f", tranPrice)) - } - - if let tranShares = transaction.transactionShares { - Text("Shares transacted: \(tranShares)") - } - - if let tranValue = transaction.transactionValue { - Text(String(format: "Transaction value: $%.2f", tranValue)) - } - } - - if let tranType = transactionCodes[transaction.transactionCode ?? "-"] { - Section(header: Text("Transaction type")) { - Text(tranType) - } - } - } - .navigationTitle("Transaction detail") - } - } -} - -struct TransactionDetail_Previews: PreviewProvider { - static var previews: some View { - TransactionDetail(transaction: InsiderTranModel(directIndirect: "D", transactionDate: "2020-02-04", fullName: "WAGNER SUSAN", postShares: 886126, transactionCode: "M", transactionPrice: 13.20, transactionShares: 12345, transactionValue: 123456.50)) - } -}
--- a/LazyBear/UI/TransactionRow.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -// -// TransactionRow.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 5/3/21. -// - -import SwiftUI - -struct TransactionRow: View { - var transaction: InsiderTranModel - @State private var showingDetail = false - @Environment(\.colorScheme) var colorScheme // Detect dark mode - - var body: some View { - Button(action: { self.showingDetail = true }) { - HStack(alignment: .top) { - VStack(alignment: .leading) { - Text(transaction.fullName?.capitalized ?? "-") - .fontWeight(.semibold) - - if let date = transaction.transactionDate { - Text(date) - } - } - - Spacer() - if let shares = transaction.transactionShares ?? 0 { - Text("\(shares)") - .foregroundColor(shares < 0 ? Color(.systemRed): Color(.systemGreen)) - .fontWeight(.semibold) - } - } - } - .foregroundColor(colorScheme == .dark ? .white: .black) - .sheet(isPresented: $showingDetail) { - TransactionDetail(transaction: transaction) - } - } -} - -struct TransactionRow_Previews: PreviewProvider { - static var previews: some View { - TransactionRow(transaction: InsiderTranModel(directIndirect: "D", transactionDate: "2020-02-04", fullName: "WAGNER SUSAN", postShares: 886126, transactionCode: "M", transactionPrice: 13.20, transactionShares: 12345, transactionValue: 123456.50)) - } -}
--- a/LazyBear/UI/Watchlist.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -// -// Watchlist.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 19/2/21. -// - -import SwiftUI -import CoreData - -struct Watchlist: View { - @EnvironmentObject var hudManager: HudManager - @Environment(\.managedObjectContext) private var moc - @FetchRequest(entity: Company.entity(), sortDescriptors: []) var companies: FetchedResults<Company> - - var body: some View { - NavigationView { - List { - ForEach(companies, id: \.symbol) { company in - let index = companies.firstIndex(of: company) - let name = company.name - let symbol = company.symbol - NavigationLink(destination: CompanyView(name: name, symbol: symbol) - .navigationTitle(symbol) - ) { - CompanyRow(symbol: symbol, name: name, rowNumber: index! % 5, showPrice: true) - } - } - .onDelete(perform: removeCompany) - } - .navigationTitle("Watchlist") - } - .navigationViewStyle(StackNavigationViewStyle()) - } - - private func removeCompany(at offsets: IndexSet) { - for index in offsets { - let company = companies[index] - moc.delete(company) - } - do { - try moc.save() - } catch { - // Error - } - } -} - -struct Watchlist_Previews: PreviewProvider { - static var previews: some View { - Watchlist() - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Views/OnboardView.swift Sun Mar 21 19:56:24 2021 +0100 @@ -0,0 +1,20 @@ +// +// OnboardView.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 21/3/21. +// + +import SwiftUI + +struct OnboardView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct OnboardView_Previews: PreviewProvider { + static var previews: some View { + OnboardView() + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Views/WelcomeView.swift Sun Mar 21 19:56:24 2021 +0100 @@ -0,0 +1,20 @@ +// +// WelcomeView.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 21/3/21. +// + +import SwiftUI + +struct WelcomeView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct WelcomeView_Previews: PreviewProvider { + static var previews: some View { + WelcomeView() + } +}
--- a/UserSettings+CoreDataClass.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// -// UserSettings+CoreDataClass.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// -// - -import Foundation -import CoreData - -@objc(UserSettings) -public class UserSettings: NSManagedObject { - -}
--- a/UserSettings+CoreDataProperties.swift Sat Mar 20 19:18:25 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// -// UserSettings+CoreDataProperties.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 26/2/21. -// -// - -import Foundation -import CoreData - - -extension UserSettings { - - @nonobjc public class func fetchRequest() -> NSFetchRequest<UserSettings> { - return NSFetchRequest<UserSettings>(entityName: "UserSettings") - } - - @NSManaged public var appIcon: String? - @NSManaged public var changedAt: Date - @NSManaged public var theme: String? - @NSManaged public var newsLanguage: String? - -} - -extension UserSettings : Identifiable { - -}