├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── README.md
│ ├── bug_report.md
│ ├── document_template.md
│ └── feature_template.md
├── PULL_REQUEST_TEMPLATE.md
├── issue_template-1
│ └── README.md
└── issue_template-2
│ └── README.md
├── .gitignore
├── GitSpace.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── swiftpm
│ │ └── Package.resolved
└── xcshareddata
│ └── xcschemes
│ ├── GitSpace copy.xcscheme
│ └── GitSpace.xcscheme
├── GitSpace
├── GitSpaceApp.swift
├── InitialView.swift
├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
├── Resources
│ ├── App
│ │ └── plist
│ │ │ ├── GoogleService-Info.plist
│ │ │ └── Info.plist
│ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── 100.png
│ │ │ ├── 102.png
│ │ │ ├── 1024.png
│ │ │ ├── 114.png
│ │ │ ├── 120.png
│ │ │ ├── 128.png
│ │ │ ├── 144.png
│ │ │ ├── 152.png
│ │ │ ├── 16.png
│ │ │ ├── 167.png
│ │ │ ├── 172.png
│ │ │ ├── 180.png
│ │ │ ├── 196.png
│ │ │ ├── 20.png
│ │ │ ├── 216.png
│ │ │ ├── 256.png
│ │ │ ├── 29.png
│ │ │ ├── 32.png
│ │ │ ├── 40.png
│ │ │ ├── 48.png
│ │ │ ├── 50.png
│ │ │ ├── 512.png
│ │ │ ├── 55.png
│ │ │ ├── 57.png
│ │ │ ├── 58.png
│ │ │ ├── 60.png
│ │ │ ├── 64.png
│ │ │ ├── 66.png
│ │ │ ├── 72.png
│ │ │ ├── 76.png
│ │ │ ├── 80.png
│ │ │ ├── 87.png
│ │ │ ├── 88.png
│ │ │ ├── 92.png
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── CustomIcons
│ │ │ ├── Contents.json
│ │ │ ├── KnockIcon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── knockIcon-dark.png
│ │ │ │ ├── knockIcon-dark@2x.png
│ │ │ │ ├── knockIcon-dark@3x.png
│ │ │ │ ├── knockIcon-light.png
│ │ │ │ ├── knockIcon-light@2x.png
│ │ │ │ └── knockIcon-light@3x.png
│ │ │ ├── KnockTabBarIcon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── knock_icon_accentColor@1x.png
│ │ │ │ ├── knock_icon_accentColor@2x.png
│ │ │ │ ├── knock_icon_accentColor@3x.png
│ │ │ │ ├── knock_icon_accentColor_dark@1x.png
│ │ │ │ ├── knock_icon_accentColor_dark@2x.png
│ │ │ │ └── knock_icon_accentColor_dark@3x.png
│ │ │ └── RepositoryIcon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── customRepo-dark.png
│ │ │ │ ├── customRepo-dark@2x.png
│ │ │ │ ├── customRepo-dark@3x.png
│ │ │ │ ├── customRepo-light.png
│ │ │ │ ├── customRepo-light@2x.png
│ │ │ │ └── customRepo-light@3x.png
│ │ ├── GSGrayColors
│ │ │ ├── Contents.json
│ │ │ ├── GSGray2.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── GSGray3.colorset
│ │ │ │ └── Contents.json
│ │ │ └── GSgray1.colorset
│ │ │ │ └── Contents.json
│ │ ├── GSPurple.colorset
│ │ │ └── Contents.json
│ │ ├── GSRed.colorset
│ │ │ └── Contents.json
│ │ ├── GuideImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── GuideImage.png
│ │ │ └── GuideImage_dark.png
│ │ ├── MascotImages
│ │ │ ├── Contents.json
│ │ │ ├── EmptyView
│ │ │ │ ├── Contents.json
│ │ │ │ ├── GitSpace-Chat-Empty.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── emptyView-chat-dark.png
│ │ │ │ │ ├── emptyView-chat-dark@2x.png
│ │ │ │ │ ├── emptyView-chat-dark@3x.png
│ │ │ │ │ ├── emptyView-chat-light.png
│ │ │ │ │ ├── emptyView-chat-light@2x.png
│ │ │ │ │ └── emptyView-chat-light@3x.png
│ │ │ │ ├── GitSpace-Knock-Empty.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── emptyView-knock-dark.png
│ │ │ │ │ ├── emptyView-knock-dark@2x.png
│ │ │ │ │ ├── emptyView-knock-dark@3x.png
│ │ │ │ │ ├── emptyView-knock-light.png
│ │ │ │ │ ├── emptyView-knock-light@2x.png
│ │ │ │ │ └── emptyView-knock-light@3x.png
│ │ │ │ ├── GitSpace-ReadMe-Empty.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── GitSpace-Readme-Empty-Dark.png
│ │ │ │ │ ├── GitSpace-Readme-Empty-Dark@2x.png
│ │ │ │ │ ├── GitSpace-Readme-Empty-Dark@3x.png
│ │ │ │ │ ├── GitSpace-Readme-Empty.png
│ │ │ │ │ ├── GitSpace-Readme-Empty@2x.png
│ │ │ │ │ └── GitSpace-Readme-Empty@3x.png
│ │ │ │ ├── GitSpace-Star-Empty.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── emptyView-star-dark.png
│ │ │ │ │ ├── emptyView-star-dark@2x.png
│ │ │ │ │ ├── emptyView-star-dark@3x.png
│ │ │ │ │ ├── emptyView-star-light.png
│ │ │ │ │ ├── emptyView-star-light@2x.png
│ │ │ │ │ └── emptyView-star-light@3x.png
│ │ │ │ └── GitSpace-Tag-Empty.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── emptyView-tag-dark.png
│ │ │ │ │ ├── emptyView-tag-dark@2x.png
│ │ │ │ │ ├── emptyView-tag-dark@3x.png
│ │ │ │ │ ├── emptyView-tag-light.png
│ │ │ │ │ ├── emptyView-tag-light@2x.png
│ │ │ │ │ └── emptyView-tag-light@3x.png
│ │ │ ├── GitSpace-ContributorListView.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── GitSpace-ContributorListView-DarkMode@1x.png
│ │ │ │ ├── GitSpace-ContributorListView-DarkMode@2x.png
│ │ │ │ ├── GitSpace-ContributorListView-DarkMode@3x.png
│ │ │ │ ├── GitSpace-ContributorListView@1x.png
│ │ │ │ ├── GitSpace-ContributorListView@2x.png
│ │ │ │ └── GitSpace-ContributorListView@3x.png
│ │ │ ├── GitSpace-Loading.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── loading-dark.png
│ │ │ │ ├── loading-dark@2x.png
│ │ │ │ ├── loading-dark@3x.png
│ │ │ │ ├── loading-light.png
│ │ │ │ ├── loading-light@2x.png
│ │ │ │ └── loading-light@3x.png
│ │ │ ├── GitSpace-Signin.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── GitSpace-Signin-DarkMode.png
│ │ │ │ ├── GitSpace-Signin-DarkMode@2x.png
│ │ │ │ ├── GitSpace-Signin-DarkMode@3x.png
│ │ │ │ ├── GitSpace-Signin.png
│ │ │ │ ├── GitSpace-Signin@2x.png
│ │ │ │ └── GitSpace-Signin@3x.png
│ │ │ ├── GuideView
│ │ │ │ ├── Contents.json
│ │ │ │ ├── GitSpace-Activity-Guide.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── activity-guide-dark.png
│ │ │ │ │ ├── activity-guide-dark@2x.png
│ │ │ │ │ ├── activity-guide-dark@3x.png
│ │ │ │ │ ├── activity-guidie-light.png
│ │ │ │ │ ├── activity-guidie-light@2x.png
│ │ │ │ │ └── activity-guidie-light@3x.png
│ │ │ │ ├── GitSpace-Block.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── GitSpace-Block-Dark.png
│ │ │ │ │ ├── GitSpace-Block-Dark@2x.png
│ │ │ │ │ ├── GitSpace-Block-Dark@3x.png
│ │ │ │ │ ├── GitSpace-Block-Light.png
│ │ │ │ │ ├── GitSpace-Block-Light@2x.png
│ │ │ │ │ └── GitSpace-Block-Light@3x.png
│ │ │ │ ├── GitSpace-Chat-Guide.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── chat-guide-dark.png
│ │ │ │ │ ├── chat-guide-dark@2x.png
│ │ │ │ │ ├── chat-guide-dark@3x.png
│ │ │ │ │ ├── chat-guide-light.png
│ │ │ │ │ ├── chat-guide-light@2x.png
│ │ │ │ │ └── chat-guide-light@3x.png
│ │ │ │ ├── GitSpace-General-Guide.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── guide-general-dark.png
│ │ │ │ │ ├── guide-general-dark@2x.png
│ │ │ │ │ ├── guide-general-dark@3x.png
│ │ │ │ │ ├── guide-general-light.png
│ │ │ │ │ ├── guide-general-light@2x.png
│ │ │ │ │ └── guide-general-light@3x.png
│ │ │ │ ├── GitSpace-Knock.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── GitSpace-Knock-Dark.png
│ │ │ │ │ ├── GitSpace-Knock-Dark@2x.png
│ │ │ │ │ ├── GitSpace-Knock-Dark@3x.png
│ │ │ │ │ ├── GitSpace-Knock-Light.png
│ │ │ │ │ ├── GitSpace-Knock-Light@2x.png
│ │ │ │ │ └── GitSpace-Knock-Light@3x.png
│ │ │ │ ├── GitSpace-KnockHistoryView.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── GitSpace-KnockHistoryView-DarkMode@1x.png
│ │ │ │ │ ├── GitSpace-KnockHistoryView-DarkMode@2x.png
│ │ │ │ │ ├── GitSpace-KnockHistoryView-DarkMode@3x.png
│ │ │ │ │ ├── GitSpace-KnockHistoryView@1x.png
│ │ │ │ │ ├── GitSpace-KnockHistoryView@2x.png
│ │ │ │ │ └── GitSpace-KnockHistoryView@3x.png
│ │ │ │ ├── GitSpace-Report.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── GitSpace-Report-Dark.png
│ │ │ │ │ ├── GitSpace-Report-Dark@2x.png
│ │ │ │ │ ├── GitSpace-Report-Dark@3x.png
│ │ │ │ │ ├── GitSpace-Report-Light.png
│ │ │ │ │ ├── GitSpace-Report-Light@2x.png
│ │ │ │ │ └── GitSpace-Report-Light@3x.png
│ │ │ │ ├── GitSpace-Star.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── GitSpace-Star-Dark.png
│ │ │ │ │ ├── GitSpace-Star-Dark@2x.png
│ │ │ │ │ ├── GitSpace-Star-Dark@3x.png
│ │ │ │ │ ├── GitSpace-Star-Light.png
│ │ │ │ │ ├── GitSpace-Star-Light@2x.png
│ │ │ │ │ └── GitSpace-Star-Light@3x.png
│ │ │ │ └── GitSpace-Tag-Guide.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── tag_star_dark.png
│ │ │ │ │ ├── tag_star_dark@2x.png
│ │ │ │ │ ├── tag_star_dark@3x.png
│ │ │ │ │ ├── tag_star_light.png
│ │ │ │ │ ├── tag_star_light@2x.png
│ │ │ │ │ └── tag_star_light@3x.png
│ │ │ └── storage
│ │ │ │ ├── Contents.json
│ │ │ │ └── GitSpace-MainKnockView.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── GitSpace-MainKnockView-DarkMode@1x.png
│ │ │ │ ├── GitSpace-MainKnockView-DarkMode@2x.png
│ │ │ │ ├── GitSpace-MainKnockView-DarkMode@3x.png
│ │ │ │ ├── GitSpace-MainKnockView@1x.png
│ │ │ │ ├── GitSpace-MainKnockView@2x.png
│ │ │ │ └── GitSpace-MainKnockView@3x.png
│ │ ├── ProfilePlaceholder.imageset
│ │ │ ├── Contents.json
│ │ │ └── ProfilePlaceholder.png
│ │ ├── UnreadMessage
│ │ │ ├── Contents.json
│ │ │ ├── UnreadMessageCapsule.colorset
│ │ │ │ └── Contents.json
│ │ │ └── UnreadMessageText.colorset
│ │ │ │ └── Contents.json
│ │ └── avatarImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── avatarImage_darkMode.png
│ │ │ └── avatarImage_lightMode.png
│ ├── GitSpace.entitlements
│ ├── LoadingDots.json
│ └── LoadingDotsDark.json
├── Sources
│ ├── Models
│ │ ├── BlockedUsers.swift
│ │ ├── Chat.swift
│ │ ├── ImageCacheManager.swift
│ │ ├── Knock.swift
│ │ ├── Message.swift
│ │ ├── PushNotification
│ │ │ ├── PushNotificationManager.swift
│ │ │ ├── PushNotificationMessageBody.swift
│ │ │ └── PushNotificationProtocol.swift
│ │ ├── Report.swift
│ │ ├── Repository.swift
│ │ ├── Tag.swift
│ │ └── UserInfo.swift
│ ├── Network
│ │ ├── APIModels
│ │ │ ├── AppInfo.swift
│ │ │ ├── ContributorProfile.swift
│ │ │ ├── Event.swift
│ │ │ ├── FollowerResponse.swift
│ │ │ ├── FollowingResponse.swift
│ │ │ ├── GithubUser.swift
│ │ │ ├── Owner.swift
│ │ │ ├── RepositoryResponse.swift
│ │ │ └── UserResponse.swift
│ │ ├── Common
│ │ │ ├── Endpoint.swift
│ │ │ ├── GitHubAPIError.swift
│ │ │ ├── HTTPClient.swift
│ │ │ └── HTTPRequestMethod.swift
│ │ ├── Endpoints
│ │ │ └── GitHubAPIEndpoint.swift
│ │ ├── Interface
│ │ │ ├── Blockable.swift
│ │ │ └── Reportable.swift
│ │ └── Services
│ │ │ ├── AppStoreUpdateChecker.swift
│ │ │ └── GitHubService.swift
│ ├── Router
│ │ ├── ContentView.swift
│ │ ├── GSTabBarRouter.swift
│ │ └── KnockCommunicationRouter.swift
│ ├── ViewModels
│ │ ├── ChatViewModel.swift
│ │ ├── ContributorViewModel.swift
│ │ ├── CurrentUserProfileViewModel.swift
│ │ ├── EventViewModel.swift
│ │ ├── FollowerViewModel.swift
│ │ ├── GitHubAuthManager.swift
│ │ ├── KeyChainManager.swift
│ │ ├── KnockHistory
│ │ │ └── KnockViewManager.swift
│ │ ├── MessageViewModel.swift
│ │ ├── RepositoryDetailViewModel.swift
│ │ ├── RepositoryViewModel.swift
│ │ ├── TagViewModel.swift
│ │ ├── TargetUserProfileViewModel.swift
│ │ └── UserViewModel.swift
│ └── Views
│ │ ├── Auth
│ │ ├── LoadingProgressView.swift
│ │ ├── LottieView.swift
│ │ └── SigninView.swift
│ │ ├── Chat
│ │ ├── ChatRoom
│ │ │ ├── ChatRoomInfoView.swift
│ │ │ ├── ChatRoomKnockSection.swift
│ │ │ ├── ChatRoomView.swift
│ │ │ └── MessageCell.swift
│ │ ├── GithubProfileImage.swift
│ │ └── MainChat
│ │ │ ├── ChatListCell.swift
│ │ │ ├── ChatListSection.swift
│ │ │ ├── ChatListSkeletonCell.swift
│ │ │ ├── ChatUserRecommendationSection.swift
│ │ │ └── MainChatView.swift
│ │ ├── Common
│ │ ├── BlockView.swift
│ │ ├── FailToLoadReadmeView.swift
│ │ ├── KnockMessageMenu.swift
│ │ ├── ReadmeLoadingView.swift
│ │ ├── ReportView.swift
│ │ ├── SuggestBlockView.swift
│ │ └── TopperProfileView.swift
│ │ ├── GuideCenter
│ │ ├── GuideBlock
│ │ │ ├── AfterBlockGuideView.swift
│ │ │ ├── BlockGuideView.swift
│ │ │ ├── BlockListGuideView.swift
│ │ │ └── GuideBlockSection.swift
│ │ ├── GuideCenterView.swift
│ │ ├── GuideFunc
│ │ │ ├── ActivityGuideView.swift
│ │ │ ├── ChatGuideView.swift
│ │ │ ├── GuideFuncSection.swift
│ │ │ ├── KnockGuideView.swift
│ │ │ ├── StarGuideView.swift
│ │ │ └── TagGuideView.swift
│ │ └── GuideReport
│ │ │ ├── AfterReportGuideView.swift
│ │ │ ├── GuideReportSection.swift
│ │ │ ├── ReportGuideView.swift
│ │ │ └── WhatToReportGuideView.swift
│ │ ├── Home
│ │ ├── ActivityFeedView.swift
│ │ ├── ActivityView.swift
│ │ ├── AddTagSheetView.swift
│ │ ├── ContributorListCell.swift
│ │ ├── ContributorListSkeletonCell.swift
│ │ ├── ContributorListSkeletonView.swift
│ │ ├── ContributorListView.swift
│ │ ├── HomeCardSkeletonCell.swift
│ │ ├── MainHomeView.swift
│ │ ├── RepositoryCardView.swift
│ │ ├── RepositoryDetailView.swift
│ │ └── StarredView.swift
│ │ ├── Knock
│ │ ├── KnockBox
│ │ │ └── ReceivedKnockView.swift
│ │ ├── MainKnockBox
│ │ │ ├── EachKnockCell.swift
│ │ │ ├── KnockHistoryView.swift
│ │ │ ├── MainKnockView.swift
│ │ │ └── ReceivedKnockDetailView.swift
│ │ └── SendKnock
│ │ │ ├── AfterSendKnockSection.swift
│ │ │ ├── BeforeSendKnockSection.swift
│ │ │ ├── EditingKnockSection.swift
│ │ │ ├── SendKnockTextEditSection.swift
│ │ │ └── SendKnockView.swift
│ │ ├── Notification
│ │ ├── KnockNotificationCell.swift
│ │ ├── NotificationView.swift
│ │ └── SystemNotificationCell.swift
│ │ ├── Profile
│ │ ├── CurrentUserProfileView.swift
│ │ ├── FollowingSkeletonView.swift
│ │ ├── MainProfileView.swift
│ │ ├── TargetUserFollowingListView.swift
│ │ └── TargetUserProfileView.swift
│ │ └── Settings
│ │ ├── Account
│ │ ├── BlockedUsersListCell.swift
│ │ ├── BlockedUsersListSkeletonView.swift
│ │ ├── BlockedUsersListView.swift
│ │ └── SetAccountView.swift
│ │ ├── AppSettings
│ │ ├── SetAppearanceView.swift
│ │ ├── SetKnockControlsView.swift
│ │ ├── SetLanguageView.swift
│ │ ├── SetNotificationsView.swift
│ │ ├── SetTextMediaView.swift
│ │ └── SetWorkingHoursView.swift
│ │ ├── Legal
│ │ ├── SetLicensesView.swift
│ │ └── TermsOfServiceView.swift
│ │ ├── SetMainView.swift
│ │ └── SetPrivacySafetyView.swift
├── Utilities
│ ├── Components
│ │ ├── GSButton.swift
│ │ ├── GSCanvas.swift
│ │ ├── GSNavigationLink.swift
│ │ ├── GSTabBarBackGround.swift
│ │ ├── GSTabBarIcon.swift
│ │ ├── GSText.swift
│ │ ├── GSTextEditor.swift
│ │ └── GSTextField.swift
│ ├── Constant.swift
│ ├── CustomHostingController.swift
│ ├── DesignSystemStyleEnums.swift
│ ├── Extensions
│ │ ├── AppDelegate+Firebase.swift
│ │ ├── Button+ColorScheme.swift
│ │ ├── CGFloat+.swift
│ │ ├── Color+.swift
│ │ ├── Date+.swift
│ │ ├── Date+DateDiff.swift
│ │ ├── Image+.swift
│ │ ├── Int+.swift
│ │ ├── String+.swift
│ │ ├── UIFont+.swift
│ │ ├── UIScreen+.swift
│ │ ├── URL+DeepLink.swift
│ │ ├── View+.swift
│ │ ├── View+DesignSystem.swift
│ │ ├── View+TextEditorBackgroundColor.swift
│ │ └── View+cornerRadius.swift
│ ├── HalfSheetManager.swift
│ ├── KeyboardHandler.swift
│ ├── Keychain.swift
│ ├── Modifiers
│ │ ├── BlinkingSkeletonModifier.swift
│ │ ├── ButtonLabelLayoutModifier.swift
│ │ ├── ChatModifiers.swift
│ │ ├── GSButtonStyleModifiers.swift
│ │ ├── GSCanvasModifier.swift
│ │ ├── GSTextEditorLayoutModifier.swift
│ │ ├── GSTextFieldLayoutModifier.swift
│ │ ├── LabelModifier.swift
│ │ ├── PinnedViewHeaderModifier.swift
│ │ ├── ShadowColorSchemeModifier.swift
│ │ ├── TabBarBackgroundModifier.swift
│ │ └── ViewDidLoadModifier.swift
│ ├── Utility.swift
│ └── ViewHighlightColorStyle.swift
├── en.lproj
│ └── Localizable.strings
└── ko.lproj
│ └── Localizable.strings
├── License
├── README.md
├── SUMMARY.md
└── docs
├── README.md
├── feedback
├── 230119_Feedback.md
└── README.md
├── retrospect
├── README.md
├── first_sprint.md
└── second_sprint.md
└── tech
├── 230120_renderingMarkdown_jegyun.md
├── DesignSystem
├── DesignSystem.md
└── README.md
├── FCM
├── 1.ApplyFirebaseCloudMessage.md
└── 2.RealDeviceDataTransmit.md
├── FireStore_CollectionGroupQuery.md
├── Firebase OAuth Login(GitLab, Apple, GitHub).md
├── Firestore_Listener.md
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj binary merge=union
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/README.md:
--------------------------------------------------------------------------------
1 | # ISSUE\_TEMPLATE
2 |
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: "버그가 생긴 부분에 대한 이슈를 작성해주세요❗️ BugFix\U0001F6E0"
4 | title: "[BugFix]"
5 | labels: "bug\U0001F41B"
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/document_template.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Documents
3 | about: 문서 및 기술 관련 자료에 대한 이슈입니다.
4 | title: "[Docs]"
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### 📌 Documents
11 |
12 |
13 |
14 | ---
15 |
16 | ### 🛠️ Tasks
17 |
18 |
19 |
20 |
21 |
22 | * [ ] line 1
23 | * [ ] line 2
24 |
25 |
26 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_template.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: 구현할 기능들에 대한 작업(Task)를 적어주세요!
4 | title: "[Feat]"
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### 📝 작업 목적
11 |
12 |
13 |
14 | ---
15 |
16 | ### 🛠️ Tasks
17 |
18 | * [ ] line 1
19 | * [ ] line 2
20 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## 개요 및 관련 이슈
2 | - 메인 홈 뷰의 UI를 전체 구현했습니다.(예시)
3 |
4 | ## 작업 사항
5 | - 관리자용 대시보드 구현(예시)
6 | - 관리자용 권한 수정 버튼 추가(예시)
7 |
8 | ## 주요 로직(Optional)
9 | ```diff
10 | - print("변경 전")
11 | + print("변경 후")
12 | ```
13 |
--------------------------------------------------------------------------------
/.github/issue_template-1/README.md:
--------------------------------------------------------------------------------
1 | # ISSUE\_TEMPLATE
2 |
3 |
--------------------------------------------------------------------------------
/.github/issue_template-2/README.md:
--------------------------------------------------------------------------------
1 | # ISSUE\_TEMPLATE
2 |
3 |
--------------------------------------------------------------------------------
/GitSpace.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/GitSpace.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/GitSpace/GitSpaceApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GitSpaceApp.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/01/17.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct GitSpaceApp: App {
12 | // register app delegate for Firebase setup
13 | @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
14 |
15 | var body: some Scene {
16 | let tabBarRouter = delegate.tabBarRouter
17 | let pushNotificationManager = delegate.pushNotificationManager
18 |
19 | WindowGroup {
20 | // !!!: - FCM Test를 진행할 때만 각주를 해제합니다.
21 | // PushNotificationTestView()
22 |
23 | InitialView(tabBarRouter: tabBarRouter)
24 | .environmentObject(ChatStore())
25 | .environmentObject(UserStore())
26 | .environmentObject(MessageStore())
27 | .environmentObject(RepositoryViewModel(service: GitHubService()))
28 | .environmentObject(TagViewModel())
29 | .environmentObject(GitHubAuthManager())
30 | .environmentObject(KnockViewManager())
31 | .environmentObject(FollowingViewModel(service: GitHubService()))
32 | .environmentObject(FollowerViewModel(service: GitHubService()))
33 | .environmentObject(tabBarRouter)
34 | .environmentObject(pushNotificationManager)
35 | .environmentObject(BlockedUsers())
36 | .onAppear {
37 | UIApplication.shared.applicationIconBadgeNumber = 0
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/GitSpace/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/App/plist/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CLIENT_ID
6 | 856592841917-a0uqb29mstng5oeqtj9cjkrhmdt95j5b.apps.googleusercontent.com
7 | REVERSED_CLIENT_ID
8 | com.googleusercontent.apps.856592841917-a0uqb29mstng5oeqtj9cjkrhmdt95j5b
9 | API_KEY
10 | AIzaSyCh4YcHMxZiHaiGwSJsbrzfi1KRRzYGAiA
11 | GCM_SENDER_ID
12 | 856592841917
13 | PLIST_VERSION
14 | 1
15 | BUNDLE_ID
16 | com.GitSpace.RBG
17 | PROJECT_ID
18 | gitspace-release
19 | STORAGE_BUCKET
20 | gitspace-release.appspot.com
21 | IS_ADS_ENABLED
22 |
23 | IS_ANALYTICS_ENABLED
24 |
25 | IS_APPINVITE_ENABLED
26 |
27 | IS_GCM_ENABLED
28 |
29 | IS_SIGNIN_ENABLED
30 |
31 | GOOGLE_APP_ID
32 | 1:856592841917:ios:85dd2f0b111addbd0ecbd4
33 |
34 |
--------------------------------------------------------------------------------
/GitSpace/Resources/App/plist/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleURLTypes
6 |
7 |
8 | CFBundleTypeRole
9 | Editor
10 | CFBundleURLSchemes
11 |
12 | gitspace-ios
13 |
14 |
15 |
16 | CFBundleTypeRole
17 | Editor
18 | CFBundleURLSchemes
19 |
20 | com.googleusercontent.apps.856592841917-a0uqb29mstng5oeqtj9cjkrhmdt95j5b
21 |
22 |
23 |
24 | CFBundleTypeRole
25 | Editor
26 | CFBundleURLSchemes
27 |
28 | com.googleusercontent.apps.856592841917-a0uqb29mstng5oeqtj9cjkrhmdt95j5b
29 |
30 |
31 |
32 | FirebaseAppDelegateProxyEnabled
33 |
34 | NSAppTransportSecurity
35 |
36 | PUSH_NOTIFICATION_ENDPOINT
37 | $(PUSH_NOTIFICATION_ENDPOINT)
38 | SERVER_KEY
39 | $(SERVER_KEY)
40 | UIBackgroundModes
41 |
42 | fetch
43 | remote-notification
44 |
45 | VALSE_DEVICE_TOKEN
46 | $(VALSE_DEVICE_TOKEN)
47 |
48 |
49 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0x7A",
9 | "green" : "0xB9",
10 | "red" : "0x2D"
11 | }
12 | },
13 | "idiom" : "universal"
14 | }
15 | ],
16 | "info" : {
17 | "author" : "xcode",
18 | "version" : 1
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/100.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/102.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/102.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/1024.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/114.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/120.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/128.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/144.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/152.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/16.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/167.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/172.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/180.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/196.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/20.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/216.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/216.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/256.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/29.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/32.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/40.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/48.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/50.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/512.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/55.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/57.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/58.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/60.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/64.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/66.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/66.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/72.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/76.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/80.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/87.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/88.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/92.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/AppIcon.appiconset/92.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "knockIcon-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "knockIcon-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "knockIcon-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "knockIcon-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "knockIcon-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "knockIcon-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockIcon.imageset/knockIcon-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "knock_icon_accentColor@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "knock_icon_accentColor_dark@1x.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "knock_icon_accentColor@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "knock_icon_accentColor_dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "knock_icon_accentColor@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "knock_icon_accentColor_dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor_dark@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor_dark@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor_dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/KnockTabBarIcon.imageset/knock_icon_accentColor_dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "customRepo-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "customRepo-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "customRepo-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "customRepo-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "customRepo-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "customRepo-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/CustomIcons/RepositoryIcon.imageset/customRepo-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GSGrayColors/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GSGrayColors/GSGray2.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.706",
9 | "green" : "0.682",
10 | "red" : "0.659"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.494",
27 | "green" : "0.451",
28 | "red" : "0.443"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GSGrayColors/GSGray3.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.953",
9 | "green" : "0.945",
10 | "red" : "0.933"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "display-p3",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.184",
27 | "green" : "0.160",
28 | "red" : "0.153"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GSGrayColors/GSgray1.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0x97",
9 | "green" : "0x8F",
10 | "red" : "0x8D"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.494",
27 | "green" : "0.451",
28 | "red" : "0.443"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | },
38 | "properties" : {
39 | "localizable" : true
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GSPurple.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0xFF",
9 | "green" : "0x64",
10 | "red" : "0xCD"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0xFF",
27 | "green" : "0x64",
28 | "red" : "0xCD"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GSRed.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0x5D",
9 | "green" : "0x5A",
10 | "red" : "0xFF"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0x5D",
27 | "green" : "0x5A",
28 | "red" : "0xFF"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | },
38 | "properties" : {
39 | "localizable" : true
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GuideImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GuideImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GuideImage_dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "idiom" : "universal",
21 | "scale" : "2x"
22 | },
23 | {
24 | "appearances" : [
25 | {
26 | "appearance" : "luminosity",
27 | "value" : "dark"
28 | }
29 | ],
30 | "idiom" : "universal",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "universal",
35 | "scale" : "3x"
36 | },
37 | {
38 | "appearances" : [
39 | {
40 | "appearance" : "luminosity",
41 | "value" : "dark"
42 | }
43 | ],
44 | "idiom" : "universal",
45 | "scale" : "3x"
46 | }
47 | ],
48 | "info" : {
49 | "author" : "xcode",
50 | "version" : 1
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GuideImage.imageset/GuideImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/GuideImage.imageset/GuideImage.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/GuideImage.imageset/GuideImage_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/GuideImage.imageset/GuideImage_dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "emptyView-chat-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "emptyView-chat-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "emptyView-chat-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "emptyView-chat-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "emptyView-chat-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "emptyView-chat-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Chat-Empty.imageset/emptyView-chat-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "emptyView-knock-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "emptyView-knock-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "emptyView-knock-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "emptyView-knock-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "emptyView-knock-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "emptyView-knock-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Knock-Empty.imageset/emptyView-knock-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-Readme-Empty.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-Readme-Empty-Dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-Readme-Empty@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-Readme-Empty-Dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-Readme-Empty@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-Readme-Empty-Dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty-Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty-Dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty-Dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty-Dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty-Dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty-Dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-ReadMe-Empty.imageset/GitSpace-Readme-Empty@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "emptyView-star-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "emptyView-star-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "emptyView-star-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "emptyView-star-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "emptyView-star-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "emptyView-star-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Star-Empty.imageset/emptyView-star-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "emptyView-tag-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "emptyView-tag-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "emptyView-tag-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "emptyView-tag-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "emptyView-tag-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "emptyView-tag-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/EmptyView/GitSpace-Tag-Empty.imageset/emptyView-tag-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-ContributorListView@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-ContributorListView-DarkMode@1x.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-ContributorListView@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-ContributorListView-DarkMode@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-ContributorListView@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-ContributorListView-DarkMode@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView-DarkMode@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView-DarkMode@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView-DarkMode@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView-DarkMode@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView-DarkMode@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView-DarkMode@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-ContributorListView.imageset/GitSpace-ContributorListView@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "loading-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "loading-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "loading-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "loading-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "loading-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "loading-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Loading.imageset/loading-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-Signin.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-Signin-DarkMode.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-Signin@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-Signin-DarkMode@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-Signin@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-Signin-DarkMode@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin-DarkMode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin-DarkMode.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin-DarkMode@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin-DarkMode@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin-DarkMode@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin-DarkMode@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GitSpace-Signin.imageset/GitSpace-Signin@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "activity-guidie-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "activity-guide-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "activity-guidie-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "activity-guide-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "activity-guidie-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "activity-guide-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guide-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guide-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guide-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guide-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guide-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guide-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guidie-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guidie-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guidie-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guidie-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guidie-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Activity-Guide.imageset/activity-guidie-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-Block-Light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-Block-Dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-Block-Light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-Block-Dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-Block-Light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-Block-Dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Block.imageset/GitSpace-Block-Light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "chat-guide-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "chat-guide-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "chat-guide-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "chat-guide-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "chat-guide-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "chat-guide-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Chat-Guide.imageset/chat-guide-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "guide-general-light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "guide-general-dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "guide-general-light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "guide-general-dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "guide-general-light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "guide-general-dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-General-Guide.imageset/guide-general-light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-Knock-Light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-Knock-Dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-Knock-Light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-Knock-Dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-Knock-Light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-Knock-Dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Knock.imageset/GitSpace-Knock-Light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-KnockHistoryView@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-KnockHistoryView-DarkMode@1x.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-KnockHistoryView@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-KnockHistoryView-DarkMode@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-KnockHistoryView@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-KnockHistoryView-DarkMode@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView-DarkMode@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView-DarkMode@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView-DarkMode@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView-DarkMode@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView-DarkMode@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView-DarkMode@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-KnockHistoryView.imageset/GitSpace-KnockHistoryView@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-Report-Light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-Report-Dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-Report-Light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-Report-Dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-Report-Light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-Report-Dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Report.imageset/GitSpace-Report-Light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-Star-Light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-Star-Dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-Star-Light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-Star-Dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-Star-Light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-Star-Dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Star.imageset/GitSpace-Star-Light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tag_star_light.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "tag_star_dark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "tag_star_light@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "tag_star_dark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "tag_star_light@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "tag_star_dark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_dark.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_dark@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_dark@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_light.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_light@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/GuideView/GitSpace-Tag-Guide.imageset/tag_star_light@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "GitSpace-MainKnockView@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "GitSpace-MainKnockView-DarkMode@1x.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "GitSpace-MainKnockView@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "GitSpace-MainKnockView-DarkMode@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "GitSpace-MainKnockView@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "GitSpace-MainKnockView-DarkMode@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView-DarkMode@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView-DarkMode@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView-DarkMode@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView-DarkMode@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView-DarkMode@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView-DarkMode@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView@1x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView@2x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/MascotImages/storage/GitSpace-MainKnockView.imageset/GitSpace-MainKnockView@3x.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/ProfilePlaceholder.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ProfilePlaceholder.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/ProfilePlaceholder.imageset/ProfilePlaceholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/ProfilePlaceholder.imageset/ProfilePlaceholder.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/UnreadMessage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/UnreadMessage/UnreadMessageCapsule.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.004",
9 | "green" : "1.000",
10 | "red" : "0.741"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.180",
27 | "green" : "0.161",
28 | "red" : "0.153"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/UnreadMessage/UnreadMessageText.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0x00",
9 | "green" : "0x00",
10 | "red" : "0x00"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0x10",
27 | "green" : "0xFF",
28 | "red" : "0xFA"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/avatarImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "avatarImage_lightMode.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "avatarImage_darkMode.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "idiom" : "universal",
21 | "scale" : "2x"
22 | },
23 | {
24 | "appearances" : [
25 | {
26 | "appearance" : "luminosity",
27 | "value" : "dark"
28 | }
29 | ],
30 | "idiom" : "universal",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "universal",
35 | "scale" : "3x"
36 | },
37 | {
38 | "appearances" : [
39 | {
40 | "appearance" : "luminosity",
41 | "value" : "dark"
42 | }
43 | ],
44 | "idiom" : "universal",
45 | "scale" : "3x"
46 | }
47 | ],
48 | "info" : {
49 | "author" : "xcode",
50 | "version" : 1
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/avatarImage.imageset/avatarImage_darkMode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/avatarImage.imageset/avatarImage_darkMode.png
--------------------------------------------------------------------------------
/GitSpace/Resources/Assets.xcassets/avatarImage.imageset/avatarImage_lightMode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/APP-iOS1/finalproject-gitspace/8247b0fc9c9f595c80a61d3791b16a24d2e4bde9/GitSpace/Resources/Assets.xcassets/avatarImage.imageset/avatarImage_lightMode.png
--------------------------------------------------------------------------------
/GitSpace/Resources/GitSpace.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 |
8 |
9 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/BlockedUsers.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlockedUsers.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/05/07.
6 | //
7 | import Foundation
8 |
9 | final class BlockedUsers: ObservableObject {
10 | /**
11 | currentUser의 BlockedUsers를 담아줄 배열입니다. ContentView의 retrieveBlockedUserList 메서드를 통해 currentUser의 BlockedUsers를 blockedUserList에 담아줍니다.
12 | - Properties: (UserInfo, GithubUser) 형식의 튜플 타입으로 이루어져 있습니다.
13 | - Author: 한호
14 | */
15 | @Published var blockedUserList: [(userInfo: UserInfo, gitHubUser: GithubUser)] = []
16 | }
17 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/Knock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Knock.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/11.
6 | //
7 |
8 | import Foundation
9 | import FirebaseFirestore
10 | import FirebaseFirestoreSwift
11 |
12 | struct Knock: Codable, Hashable, Identifiable {
13 | var id: String = UUID().uuidString
14 | var knockedDate: Timestamp
15 | var knockMessage: String
16 | var knockStatus: String
17 | var knockCategory: String
18 | var declineMessage: String? = nil
19 | var receivedUserName: String
20 | var sentUserName: String
21 | var receivedUserID: String
22 | var sentUserID: String
23 |
24 | var acceptedDate: Timestamp? = nil
25 | var declinedDate: Timestamp? = nil
26 |
27 | var chatID: String? = nil
28 |
29 | var dateDiff: String {
30 | get {
31 | let diff = knockedDate.dateValue()
32 | return diff.timeAgoDisplay()
33 | }
34 | }
35 |
36 | /// 기본 생성자
37 | init(
38 | date: Date,
39 | knockMessage: String,
40 | knockStatus: String,
41 | knockCategory: String,
42 | declineMessage: String? = nil,
43 | receivedUserName: String,
44 | sentUserName: String,
45 | receivedUserID: String,
46 | sentUserID: String
47 | ) {
48 | self.knockedDate = Timestamp(date: date)
49 | self.knockMessage = knockMessage
50 | self.knockStatus = knockStatus
51 | self.knockCategory = knockCategory
52 | self.declineMessage = declineMessage
53 | self.receivedUserName = receivedUserName
54 | self.sentUserName = sentUserName
55 | self.receivedUserID = receivedUserID
56 | self.sentUserID = sentUserID
57 | }
58 |
59 | /// 옵셔널의 기본값으로 전달할 인스턴스를 생성하는 생성자
60 | init(isFailedDummy: Bool) {
61 | self.init(
62 | date: .now,
63 | knockMessage: "FAILED",
64 | knockStatus: "FAILED",
65 | knockCategory: "FAILED",
66 | receivedUserName: "FAILED",
67 | sentUserName: "FAILED",
68 | receivedUserID: "",
69 | sentUserID: ""
70 | )
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/Message.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MessageCellModel.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/01/27.
6 | //
7 |
8 | import Foundation
9 |
10 | // 채팅 메세지 모델
11 | struct Message : Identifiable, Codable {
12 | let id: String // 메세지 ID
13 | let senderID: String // 메세지 작성자 유저 ID
14 | var textContent: String // 메세지 내용
15 | let imageContent: String? // 메세지에 첨부한 이미지
16 | let sentDate: Date // 메세지 작성 날짜
17 | let isRead: Bool // 수신 유저의 메세지 확인 여부
18 |
19 | var sentDateAsString : String {
20 | let dateFormatter = DateFormatter()
21 | dateFormatter.locale = Locale(identifier: "ko_kr")
22 | dateFormatter.timeZone = TimeZone(abbreviation: "KST")
23 | dateFormatter.dateFormat = "HH:mm"
24 |
25 | return dateFormatter.string(from: sentDate)
26 | }
27 |
28 | static func encodedMessage(with message: Message) -> Message {
29 | var encodedMessage: Message = message
30 | encodedMessage.textContent = message.textContent.asBase64 ?? ""
31 | return encodedMessage
32 | }
33 |
34 | static func decodedMessage(with message: Message) -> Message {
35 | var decodedMessage: Message = message
36 | decodedMessage.textContent = message.textContent.decodedBase64String ?? ""
37 | return decodedMessage
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/PushNotification/PushNotificationProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PushNotification.swift
3 | // GitSpace
4 | //
5 | // Created by Celan on 2023/03/08.
6 | //
7 |
8 | import SwiftUI
9 |
10 | /**
11 | PushNotification을 발송하는 모델이 채택합니다.
12 | 해당 모델은 서버 엔드포인트에 접근할 url 속성과 sendNotification, MakeNotificationData, configureHTTPRequst 메소드를 갖습니다.
13 |
14 | - Author: @Valselee(celan)
15 | */
16 | protocol GSPushNotificationSendable {
17 | var url: URL? { get }
18 |
19 | /**
20 | Notification을 생성하여 발송하는 동시성 메소드입니다.
21 | - Parameters:
22 | - with: PushNotificationMessageType 열거형 타입으로 knock, chat을 전달합니다. 해당 내용으로 Push Notification을 구성합니다.
23 | - to: 어떤 유저에게 알람을 보낼지 UserInfo 타입으로 전달합니다.
24 | */
25 | func sendNotification(
26 | with message: PushNotificationMessageType,
27 | to userInfo: UserInfo
28 | ) async -> Void
29 |
30 | /**
31 | Notification의 payload 데이터를 생성합니다.
32 | - Parameters:
33 | - pushNotificationBody: PushNotificationMessageBody 열거형 타입으로 Data를 만들 때 필요한 데이터를 전달합니다.
34 | - to: UserInfo 정보를 받아서 해당 유저의 기기 토큰과 아이디를 활용하여 필요한 Data 타입을 리턴합니다.
35 | - Returns: Data?
36 |
37 | */
38 | func makeNotificationData(
39 | pushNotificationBody: PushNotificationMessageBody,
40 | to userInfo: UserInfo
41 | ) -> Data?
42 |
43 | /**
44 | Notification의 HTTP Request를 생성합니다.
45 | - Returns: URLRequest
46 | */
47 | func configureHTTPRequest(
48 | url: URL
49 | ) -> URLRequest
50 | }
51 |
52 | /**
53 | Notification을 탭할 때 View를 Navigate할 수 있도록 합니다.
54 | */
55 | protocol GSPushNotificationNavigatable {
56 | var isNavigatedToReceivedKnock: Bool { get set }
57 | var isNavigatedToSentKnock: Bool { get set }
58 | var isNavigatedToChat: Bool { get set }
59 | }
60 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/Report.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Report.swift
3 | // GitSpace
4 | //
5 | // Created by Celan on 2023/04/16.
6 | //
7 |
8 | import Foundation
9 | import FirebaseFirestore
10 |
11 | struct Report: Codable {
12 | var id: String = UUID().uuidString
13 | var reason: String
14 | var reporterID: String
15 | var targetUserID: String
16 | var date: Timestamp
17 | // Knock 메시지, Chat 메시지 등등
18 | var content: String?
19 | var type: String
20 |
21 | enum ReportType: String, Codable {
22 | case user = "User"
23 | case chat = "Chat"
24 | case knock = "Knock"
25 | }
26 |
27 | enum ReportReason: String, Codable, CaseIterable {
28 | case spamming = "Spamming"
29 | case offensive = "Verbal Abuse, Offensive Language"
30 | case sexual = "Sexual Description(Activity)"
31 | case cheating = "Cheating"
32 | case bullying = "Cyberbullying or Harassment"
33 |
34 | func getDescription() -> String {
35 | switch self {
36 | case .spamming:
37 | return "Sending unsolicited messages in bulk by chat and knock."
38 | case .offensive:
39 | return "Including, but not limited to language that is unlawful, harmful, threatening, abusive, harassing, defamatory, vulgar, obscene, sexually explicit, or otherwise objectionable."
40 | case .sexual:
41 | return "Sending offensive sexual content to other users."
42 | case .cheating:
43 | return "Using unapproved third party programs or cheating the other users with false information."
44 | case .bullying:
45 | return "Intentionally bullying other users."
46 | }
47 | }
48 |
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/Repository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Repository.swift
3 | // GitSpace
4 | //
5 | // Created by Da Hae Lee on 2023/02/05.
6 | //
7 |
8 | import Foundation
9 |
10 | // MARK: - Temporary Repository Sturct
11 | struct Repository: Identifiable, Codable, Equatable {
12 | static func == (lhs: Repository, rhs: Repository) -> Bool {
13 | return lhs.id == rhs.id
14 | }
15 |
16 | var id: Int
17 | var name: String
18 | var fullName: String
19 | var owner: Owner
20 | var description: String?
21 | // var tags: [Int]?
22 | var isPrivate: Bool
23 | var stargazersCount: Int
24 |
25 | enum CodingKeys: String, CodingKey {
26 | case id = "id"
27 | case name = "name"
28 | case fullName = "full_name"
29 | case owner = "owner"
30 | case description = "description"
31 | case isPrivate = "private"
32 | case stargazersCount = "stargazers_count"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Models/Tag.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Tag.swift
3 | // GitSpace
4 | //
5 | // Created by Da Hae Lee on 2023/02/05.
6 | //
7 |
8 | import Foundation
9 |
10 | // MARK: - Temporary Tag Struct
11 | struct Tag: Identifiable, Hashable, Codable {
12 | var id: String = UUID().uuidString
13 | var tagName: String
14 | var repositories: [String] // “${username}/${repoName}”
15 | var isSelected: Bool = false
16 | }
17 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/AppInfo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppInfo.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/07/03.
6 | //
7 |
8 | import Foundation
9 |
10 | struct AppInfo: Codable {
11 | let resultCount: Int
12 | let results: [AppInfoResult]
13 | }
14 |
15 | struct AppInfoResult: Codable {
16 | let version: String
17 | }
18 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/ContributorProfile.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContributorProfile.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/14.
6 | //
7 |
8 | import Foundation
9 |
10 | struct ContributorProfile: Identifiable, Codable {
11 |
12 | var id: Int // 고유 id
13 | var login: String // github id
14 |
15 | var url: String
16 | var avatar_url: String // profile image
17 |
18 | var followers_url: String // followers
19 | var following_url: String // following
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/Event.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Event.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/15.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Event: Codable, Identifiable {
11 | let id: String
12 | let type: String?
13 | let actor: Actor
14 | let repo: Repo
15 | let `public`: Bool
16 | let createdAt: String
17 |
18 | enum CodingKeys: String, CodingKey {
19 | case id, type, actor, repo, `public`
20 | case createdAt = "created_at"
21 | }
22 | }
23 |
24 | struct Actor: Codable, Identifiable {
25 | let id: Int
26 | let login: String
27 | let displayLogin: String
28 | let gravatarID: String?
29 | let url: String
30 | let avatarURL: String
31 |
32 | enum CodingKeys: String, CodingKey {
33 | case id, login, url
34 | case displayLogin = "display_login"
35 | case gravatarID = "gravatar_id"
36 | case avatarURL = "avatar_url"
37 | }
38 |
39 | }
40 |
41 | struct Repo: Codable, Identifiable {
42 | let id: Int
43 | let name: String
44 | let url: String
45 | }
46 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/FollowerResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Follower.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/15.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FollowerResponse: Codable, Identifiable, Equatable {
11 |
12 | let id: Int
13 | let name: String?
14 | let url: String
15 | let login: String
16 | let avatarURL: String
17 |
18 | enum CodingKeys: String, CodingKey {
19 | case id, name, url, login
20 | case avatarURL = "avatar_url"
21 | }
22 |
23 | // 이름, 프로필사진,
24 | // 팔로워수, 레포지토리 수
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/FollowingResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FollowingResponse.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/03/21.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FollowingResponse: Codable {
11 | let login: String
12 | let id: Int
13 | let nodeID: String
14 | let avatarURL: String
15 | let gravatarID: String
16 | let url, htmlURL, followersURL: String
17 | let followingURL, gistsURL, starredURL: String
18 | let subscriptionsURL, organizationsURL, reposURL: String
19 | let eventsURL: String
20 | let receivedEventsURL: String
21 | let type: String
22 | let siteAdmin: Bool
23 |
24 | enum CodingKeys: String, CodingKey {
25 | case login, id
26 | case nodeID = "node_id"
27 | case avatarURL = "avatar_url"
28 | case gravatarID = "gravatar_id"
29 | case url
30 | case htmlURL = "html_url"
31 | case followersURL = "followers_url"
32 | case followingURL = "following_url"
33 | case gistsURL = "gists_url"
34 | case starredURL = "starred_url"
35 | case subscriptionsURL = "subscriptions_url"
36 | case organizationsURL = "organizations_url"
37 | case reposURL = "repos_url"
38 | case eventsURL = "events_url"
39 | case receivedEventsURL = "received_events_url"
40 | case type
41 | case siteAdmin = "site_admin"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/GithubUser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GitHubUser.swift
3 | // GitSpace
4 | //
5 | // Created by 이다혜, 박제균 on 2023/02/09.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GithubUser: Identifiable, Codable, Equatable {
11 | let id: Int // 고유 id
12 | let login: String // github id
13 | let name: String? // username
14 | let email: String? // email
15 | let avatar_url: String // profile image
16 | let bio: String? // bio, intro message
17 | let company: String? // company
18 | let location: String? // location
19 | let blog: String? // blog url
20 | let public_repos: Int // public repos
21 | let followers: Int // followers
22 | let following: Int // following
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/Owner.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Owner.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/14.
6 | //
7 |
8 | import Foundation
9 |
10 | // MARK: - Owner
11 | struct Owner: Codable {
12 |
13 | let login: String
14 | let id: Int
15 | let nodeID: String
16 | let avatarURL: String
17 | let gravatarID: String?
18 | let url, htmlURL, followersURL: String
19 | let followingURL, gistsURL, starredURL: String
20 | let subscriptionsURL, organizationsURL, reposURL: String
21 | let eventsURL: String
22 | let receivedEventsURL: String
23 |
24 | enum CodingKeys: String, CodingKey {
25 | case login, id
26 | case nodeID = "node_id"
27 | case avatarURL = "avatar_url"
28 | case gravatarID = "gravatar_id"
29 | case url
30 | case htmlURL = "html_url"
31 | case followersURL = "followers_url"
32 | case followingURL = "following_url"
33 | case gistsURL = "gists_url"
34 | case starredURL = "starred_url"
35 | case subscriptionsURL = "subscriptions_url"
36 | case organizationsURL = "organizations_url"
37 | case reposURL = "repos_url"
38 | case eventsURL = "events_url"
39 | case receivedEventsURL = "received_events_url"
40 | }
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/APIModels/RepositoryResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RepositoryResponse.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/09.
6 | //
7 |
8 |
9 | import Foundation
10 |
11 | // FIXME: - QuickType 돌린 임시 모델, 필요한 데이터만 골라서 모델링 다시 하기
12 | struct RepositoryResponse: Codable {
13 | let id: Int
14 | let nodeID, name, fullName: String
15 |
16 | enum CodingKeys: String, CodingKey {
17 | case id, name
18 | case fullName = "full_name"
19 | case nodeID = "node_id"
20 | }
21 |
22 | }
23 |
24 |
25 | struct RepositoryReadmeResponse: Codable {
26 | let size: Int
27 | let name, path, content, url: String
28 | let gitURL, htmlURL, downloadURL: String?
29 |
30 | enum CodingKeys: String, CodingKey {
31 | case size, name, path, content, url
32 | case gitURL = "git_url"
33 | case htmlURL = "html_url"
34 | case downloadURL = "download_url"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/Common/Endpoint.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Endpoint.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/09.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol Endpoint {
11 | var scheme: String { get }
12 | var host: String { get }
13 | var path: String { get }
14 | var method: HTTPRequestMethod { get }
15 | var header: [String: String]? { get }
16 | var body: [String: String]? { get }
17 | var queryItems: [URLQueryItem] { get }
18 | }
19 |
20 | extension Endpoint {
21 | var scheme: String {
22 | return "https"
23 | }
24 |
25 | var host: String {
26 | return "api.github.com"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/Common/GitHubAPIError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GitHubAPIError.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/05.
6 | //
7 |
8 | import Foundation
9 |
10 | enum GitHubAPIError: Error {
11 | /// URLComponents를 통해 URL 생성에 실패한 경우 보여줄 에러 메시지
12 | case invalidURL
13 | case invalidResponse
14 | case failToDecoding
15 | case failToEncoding
16 | case failToLoadREADME
17 | case unauthorized
18 | case unexpectedStatusCode
19 | case notModified
20 | case requiresAuthentification
21 | case forbidden
22 | case notFound
23 | case failToRequest
24 | case unknown
25 |
26 | var errorDescription: String {
27 | switch self {
28 | case .invalidURL: return "URL was invalid, Please try again."
29 | case .invalidResponse: return "Invalid response from the server. Please try again."
30 | case .failToDecoding: return "Fail to decode data. Please try again"
31 | case .failToEncoding: return "Fail to encode data. Please try again"
32 | case .unauthorized: return "Authorization Failed. Please try again"
33 | case .unexpectedStatusCode: return "Unexpected Error occured. Please try again"
34 | case .notModified: return "No data modification has been made. Please try again"
35 | case .requiresAuthentification: return "Authentication is required. Please try again"
36 | case .forbidden: return "This is an invalid permission. Please Try Again"
37 | case .notFound: return "Resources are not found. Please Try Again"
38 | case .failToLoadREADME: return "Fail to load README.md from Server. Please Try Again"
39 | case .failToRequest: return "Fail to Request Network. Please Try Again"
40 | default: return "Unknown Error. Please try Again"
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Network/Common/HTTPRequestMethod.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HTTPRequestMethod.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/09.
6 | //
7 |
8 | import Foundation
9 |
10 | enum HTTPRequestMethod: String {
11 | case get = "GET"
12 | case put = "PUT"
13 | case delete = "DELETE"
14 | case post = "POST"
15 | }
16 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Router/GSTabBarRouter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GSTabBarRouter.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | /**
11 | 현재 렌더링하고 있는 탭을 저장하는 GSTabBarRouter class
12 |
13 | - Author: 제균
14 | */
15 |
16 | final class GSTabBarRouter: ObservableObject {
17 | @Published var currentPage: Page?
18 | }
19 |
20 | extension GSTabBarRouter {
21 | enum Page {
22 | case stars
23 | case chats
24 | case knocks
25 | case profile
26 |
27 | static func ==(
28 | lhs: GSTabBarRouter.Page,
29 | rhs: GSTabBarRouter.Page
30 | ) -> Bool {
31 | switch (lhs, rhs) {
32 | case (.stars, .stars):
33 | return true
34 | case (.profile, .profile):
35 | return true
36 | case (.knocks, .knocks):
37 | return true
38 | case (.chats, .chats):
39 | return true
40 | default:
41 | return false
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/GitSpace/Sources/ViewModels/ContributorViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContributorViewModel.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/14.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 | final class ContributorViewModel: ObservableObject {
12 |
13 | private let service: GitHubService
14 |
15 | init(service: GitHubService) {
16 | self.service = service
17 | }
18 |
19 | @Published var contributors: [GithubUser] = []
20 | @Published var isLoading: Bool = true
21 | var temporaryContributors: [GithubUser] = []
22 |
23 | /// FirebaseUserID로 GitHub Contributor 를 가져오는 메소드.
24 | public func getContributor(with userID: Int) -> GithubUser? {
25 |
26 | let result = contributors.filter { $0.id == userID }.first
27 | print(#file, #function, result?.name ?? "FAILED")
28 | return result
29 | }
30 |
31 | @MainActor
32 | func requestContributors(repository: Repository, page: Int) async -> Result {
33 |
34 | let contributorsResult = await service.requestRepositoryContributors(owner: repository.owner.login, repositoryName: repository.name, page: page)
35 |
36 | switch contributorsResult {
37 | case .success(let users):
38 | for user in users {
39 | let result = await service.requestUserInformation(userName: user.login)
40 | switch result {
41 | case .success(let user):
42 | temporaryContributors.append(user)
43 | case .failure(let error):
44 | return .failure(error)
45 | }
46 | }
47 | return .success(())
48 | case .failure(let error):
49 | // 컨트리뷰터 목록을 가져올 수 없다는 에러
50 | return .failure(error)
51 | }
52 | }
53 |
54 |
55 |
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/GitSpace/Sources/ViewModels/CurrentUserProfileViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CurrentUserProfileViewModel.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/03/09.
6 | //
7 |
8 | import Foundation
9 |
10 | final class CurrentUserProfileViewModel: ObservableObject {
11 |
12 | let gitHubService: GitHubService
13 |
14 | init(service: GitHubService) {
15 | self.gitHubService = service
16 | }
17 |
18 | @MainActor
19 | func requestUserReadMe(user: GithubUser) async -> Result {
20 | let result = await gitHubService.requestRepositoryReadme(owner: user.login, repositoryName: user.login)
21 |
22 | switch result {
23 |
24 | case .success(let readme):
25 | guard let content = Data(base64Encoded: readme.content, options: .ignoreUnknownCharacters) else {
26 | return .failure(.failToLoadREADME)
27 | }
28 |
29 | guard let decodeContent = String(data: content, encoding: .utf8) else {
30 | return .failure(.failToLoadREADME)
31 | }
32 |
33 | let htmlResult = await gitHubService.requestMarkdownToHTML(content: decodeContent)
34 |
35 | switch htmlResult {
36 |
37 | case .success(let result):
38 | return .success(result)
39 | // markdown을 html로 변환 실패
40 | case .failure(let error):
41 | return .failure(error)
42 | }
43 |
44 | // repository의 markdown을 요청 실패
45 | case .failure(let error):
46 | return .failure(error)
47 | }
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/GitSpace/Sources/ViewModels/RepositoryDetailViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RepositoryDetailViewModel.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/03/08.
6 | //
7 |
8 | import Foundation
9 |
10 | final class RepositoryDetailViewModel: ObservableObject {
11 |
12 | private let service: GitHubService
13 |
14 | init(service: GitHubService) {
15 | self.service = service
16 | }
17 |
18 | @MainActor
19 | func requestReadMe(repository: Repository) async -> Result {
20 | let readMeResult = await service.requestRepositoryReadme(owner: repository.owner.login, repositoryName: repository.name)
21 |
22 | switch readMeResult {
23 |
24 | case .success(let response):
25 | guard let content = Data(base64Encoded: response.content, options: .ignoreUnknownCharacters) else {
26 | return .failure(GitHubAPIError.failToLoadREADME)
27 | }
28 |
29 | guard let decodeContent = String(data: content, encoding: .utf8) else {
30 | return .failure(GitHubAPIError.failToLoadREADME)
31 | }
32 |
33 | let htmlResult = await service.requestMarkdownToHTML(content: decodeContent)
34 |
35 | switch htmlResult {
36 | case .success(let result):
37 | return .success(result)
38 | case .failure(let error):
39 | return .failure(error)
40 | }
41 |
42 | case .failure(let error):
43 | return .failure(error)
44 | }
45 | }
46 |
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Auth/LoadingProgressView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoadingProgressView.swift
3 | // GitSpace
4 | //
5 | // Created by 정예슬 on 2023/03/09.
6 | //
7 |
8 | import SwiftUI
9 | import Lottie
10 |
11 | struct LoadingProgressView: View {
12 |
13 | @Environment(\.colorScheme) var colorScheme
14 |
15 | /// 로그인 프로세스 동안 띄워 줄 로딩 뷰.
16 | /// 화면 전체에 overlay로 덮어 버튼 클릭을 막을 수 있다.
17 | /// 위에 올릴 View가 이 LoadingProgressView.swift 이다.
18 | var body: some View {
19 | ZStack {
20 | VStack {
21 | Spacer()
22 |
23 | if colorScheme == .light {
24 | LottieView(jsonName: "LoadingDots.json")
25 | .padding(.top, 85)
26 | .scaleEffect(1.3)
27 | .background(.white)
28 | } else {
29 | LottieView(jsonName: "LoadingDotsDark.json")
30 | .padding(.top, 85)
31 | .scaleEffect(1.3)
32 | .background(.black)
33 | }
34 |
35 | Spacer()
36 | }
37 |
38 | VStack{
39 | Spacer()
40 |
41 | Image("GitSpace-Loading")
42 | .resizable()
43 | .scaledToFit()
44 | .frame(width: 200)
45 | .padding(.bottom, 100)
46 |
47 | Spacer()
48 | }
49 | }
50 | .ignoresSafeArea()
51 | }
52 | }
53 |
54 | struct LoadingProgressView_Previews: PreviewProvider {
55 | static var previews: some View {
56 | LoadingProgressView()
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Auth/LottieView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LottieView.swift
3 | // GitSpace
4 | //
5 | // Created by 정예슬 on 2023/03/09.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 | import Lottie
11 | import UIKit
12 |
13 | struct LottieView: UIViewRepresentable {
14 | var name : String
15 | var loopMode: LottieLoopMode
16 |
17 | // 간단하게 View로 JSON 파일 이름으로 애니메이션을 실행합니다.
18 | init(jsonName: String = "", loopMode : LottieLoopMode = .loop){
19 | self.name = jsonName
20 | self.loopMode = loopMode
21 | }
22 |
23 | func makeUIView(context: UIViewRepresentableContext) -> UIView {
24 | let view = UIView(frame: .zero)
25 |
26 | let animationView = LottieAnimationView()
27 | let animation = LottieAnimation.named(name)
28 | animationView.animation = animation
29 | // AspectFit으로 적절한 크기의 에니매이션을 불러옵니다.
30 | animationView.contentMode = .scaleAspectFit
31 | // 애니메이션은 기본으로 Loop합니다.
32 | animationView.loopMode = loopMode
33 | // 애니메이션을 재생합니다
34 | animationView.play()
35 | // 백그라운드에서 재생이 멈추는 오류를 잡습니다
36 | animationView.backgroundBehavior = .pauseAndRestore
37 | //컨테이너의 너비와 높이를 자동으로 지정할 수 있도록합니다. 로티는 컨테이너 위에 작성됩니다.
38 |
39 |
40 | animationView.translatesAutoresizingMaskIntoConstraints = false
41 |
42 | view.addSubview(animationView)
43 | //레이아웃의 높이와 넓이의 제약
44 | NSLayoutConstraint.activate([
45 | animationView.heightAnchor.constraint(equalTo: view.heightAnchor),
46 | animationView.widthAnchor.constraint(equalTo: view.widthAnchor)
47 | ])
48 |
49 | return view
50 | }
51 |
52 | func updateUIView(_ uiView: UIViewType, context: Context) {
53 | }
54 | }
55 |
56 | struct LottieView_Previews: PreviewProvider {
57 | static var previews: some View {
58 | LottieView()
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Chat/ChatRoom/ChatRoomKnockSection.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatDetailKnockSection.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/02/01.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ChatDetailKnockSection: View {
11 |
12 | @Environment(\.colorScheme) var colorScheme
13 | let chat: Chat
14 |
15 | var body: some View {
16 | VStack(spacing: 10) {
17 | GSText.CustomTextView(style: .sectionTitle,
18 | string: chat.knockContentDateAsString)
19 | .padding(.bottom, 10)
20 |
21 | HStack {
22 | RoundedRectangle(cornerRadius: 10)
23 | .frame(width: 3, height: 15)
24 | .foregroundColor(
25 | colorScheme == .light
26 | ? .gsGreenPrimary
27 | : .gsYellowPrimary
28 | )
29 | Text("Knock Message")
30 | .font(.footnote)
31 | .foregroundColor(.gsLightGray1)
32 | .bold()
33 |
34 | Spacer()
35 | }
36 | .padding(.leading, 20)
37 |
38 | GSCanvas.CustomCanvasView(style: .primary) {
39 | HStack {
40 | GSText.CustomTextView(style: .body1,
41 | string: chat.knockContent)
42 | .frame(maxWidth: .infinity)
43 | }
44 | }
45 | .padding(.horizontal, 20)
46 | }
47 | }
48 | }
49 |
50 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Chat/GithubProfileImage.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ProfileAsyncImage.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/02/01.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // MARK: -View :
11 | struct GithubProfileImage: View {
12 |
13 | let urlStr: String
14 | let size: CGFloat
15 | @State private var profileImage: Image?
16 |
17 | init(urlStr: String, size: CGFloat) {
18 | self.urlStr = urlStr
19 | self.size = size
20 | }
21 |
22 | var body : some View {
23 |
24 | VStack {
25 | EmptyView()
26 | if let profileImage {
27 | profileImage
28 | .resizable()
29 | .aspectRatio(contentMode: .fit)
30 | .clipShape(Circle())
31 | .frame(width : size)
32 | }
33 | }
34 | .task {
35 | profileImage = await .loadCachedImage(key: urlStr)
36 | }
37 | }
38 | }
39 |
40 |
41 | struct DefaultProfileImage: View {
42 | let size: CGFloat
43 |
44 | var body: some View {
45 | Image("ProfilePlaceholder")
46 | .resizable()
47 | .aspectRatio(contentMode: .fit)
48 | .clipShape(Circle())
49 | .frame(width : size)
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Chat/MainChat/ChatListSkeletonCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatListSkeletonCell.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/02/07.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ChatListSkeletonCell : View {
11 |
12 | @State var opacity: CGFloat = 0.4
13 |
14 | var body: some View {
15 | VStack(alignment: .leading){
16 | HStack{
17 | Image("ProfilePlaceholder")
18 | .resizable()
19 | .aspectRatio(contentMode: .fit)
20 | .clipShape(Circle())
21 | .frame(width : 55)
22 | .padding(.trailing)
23 |
24 |
25 | VStack(alignment: .leading) {
26 | Text("@Skeleton~")
27 | .font(.title3)
28 | .bold()
29 | .padding(.bottom, 5)
30 | .lineLimit(1)
31 | .modifier(BlinkingSkeletonModifier(opacity: opacity, shouldShow: true))
32 |
33 | Text("@Skeleton Messages")
34 | .foregroundColor(.gray)
35 | .frame(maxWidth: .infinity, alignment: .leading)
36 | .modifier(BlinkingSkeletonModifier(opacity: opacity, shouldShow: true))
37 | }
38 |
39 | }
40 | .frame(width: 330,height: 100, alignment: .leading)
41 | Divider()
42 | .frame(width: 350)
43 | }
44 | .task {
45 | withAnimation(.linear(duration: 1.0).repeatForever(autoreverses: true)){
46 | self.opacity = opacity == 0.4 ? 0.8 : 0.4
47 | }
48 | }
49 |
50 | }
51 | }
52 |
53 |
54 | struct ChatListSkeletonCell_Previews: PreviewProvider {
55 | static var previews: some View {
56 | ChatListSkeletonCell()
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Common/FailToLoadReadmeView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FailToLoadReadmeView.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/03/17.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct FailToLoadReadmeView: View {
11 | var body: some View {
12 | VStack {
13 | Image("GitSpace-ReadMe-Empty")
14 | .resizable()
15 | .aspectRatio(contentMode: .fit)
16 | .frame(width: 250, height: 200)
17 |
18 | GSText.CustomTextView(style: .title3, string: "Fail to Load **README.md**")
19 | }
20 | .frame(width: 250, height: 200)
21 | }
22 | }
23 |
24 | struct ReadmeEmptyView: View {
25 | var body: some View {
26 | VStack {
27 | Image("GitSpace-ReadMe-Empty")
28 | .resizable()
29 | .aspectRatio(contentMode: .fit)
30 | .frame(width: 250, height: 200)
31 |
32 | GSText.CustomTextView(style: .title3, string: "**README.md** does not exist.")
33 | }
34 | .frame(maxWidth: .infinity, alignment: .center)
35 | //.frame(height: 200)
36 | }
37 | }
38 |
39 |
40 |
41 | struct FailToLoadReadmeView_Previews: PreviewProvider {
42 | static var previews: some View {
43 | FailToLoadReadmeView()
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Common/KnockMessageMenu.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KnockEllipsisMenu.swift
3 | // GitSpace
4 | //
5 | // Created by Celan on 2023/04/24.
6 | //
7 |
8 | import SwiftUI
9 |
10 | /**
11 | EillipsisMenu를 그리는 ViewBuilder입니다.
12 | Report와 Edit Menu가 Nested 되어 있습니다.
13 | 수신인일 경우, Report 메뉴를 띄우고
14 | 발신인일 경우, Edit 버튼을 띄웁니다.
15 | */
16 | struct KnockMessageMenu: View {
17 | @Environment(\.colorScheme) var colorScheme
18 | @EnvironmentObject var userStore: UserStore
19 | @Binding var knock: Knock
20 | @Binding var isReporting: Bool
21 | @Binding var isEditingKnockMessage: Bool
22 |
23 | /**
24 | knock의 발신인이 현재 유저인지 id를 비교하고, 현재 유저가 보낸 knock라면 true를 리턴합니다.
25 | */
26 | private var isCurrentUserSentKnock: Bool {
27 | return knock.sentUserID == userStore.currentUser?.id
28 | }
29 |
30 | // MARK: - BODY
31 | var body: some View {
32 | switch isCurrentUserSentKnock {
33 | case true:
34 | Button {
35 | withAnimation {
36 | isEditingKnockMessage.toggle()
37 | }
38 | } label: {
39 | Image(systemName: "pencil")
40 | .frame(width: 40, height: 40)
41 | }
42 | .tint(colorScheme == .light ? .gsLightGray2 : .white)
43 |
44 | case false:
45 | Menu {
46 | Button(role: .destructive) {
47 | withAnimation {
48 | isReporting.toggle()
49 | }
50 | } label: {
51 | Label("Report", systemImage: "exclamationmark.bubble")
52 | }
53 | } label: {
54 | Image(systemName: "ellipsis")
55 | .frame(width: 40, height: 40)
56 | }
57 | .tint(colorScheme == .light ? .gsLightGray2 : .white)
58 |
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Common/ReadmeLoadingView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReadmeLoadingView.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/03/16.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ReadmeLoadingView: View {
11 | var body: some View {
12 | VStack {
13 | Image("GitSpace-Loading")
14 | .resizable()
15 | .aspectRatio(contentMode: .fit)
16 | .frame(width: 250, height: 200)
17 |
18 | GSText.CustomTextView(style: .title4, string: "Loading README.md...")
19 | }
20 | .frame(width: 250, height: 200)
21 |
22 | }
23 | }
24 |
25 | struct ReadmeLoadingView_Previews: PreviewProvider {
26 | static var previews: some View {
27 | ReadmeLoadingView()
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/GuideCenter/GuideCenterView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GuideCenterView.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/07.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct GuideCenterView: View {
11 |
12 | @Environment(\.dismiss) private var dismiss
13 | @Environment(\.colorScheme) var colorScheme
14 |
15 | var body: some View {
16 | NavigationView {
17 | ScrollView {
18 |
19 | HStack {
20 |
21 | Image("GitSpace-General-Guide")
22 | .resizable()
23 | .aspectRatio(contentMode: .fit)
24 | .frame(width: 100, height: 100)
25 |
26 | VStack(alignment: .leading) {
27 | GSText.CustomTextView(
28 | style: .title3,
29 | string: "The Essential Guidebook for GitSpacers 📖")
30 | }
31 |
32 | Spacer()
33 | }
34 | .padding(.horizontal)
35 |
36 | GuideFuncSection()
37 | GuideBlockSection()
38 | GuideReportSection()
39 |
40 | } // ScrollView
41 | .navigationBarTitle("Guide Center")
42 | .toolbar {
43 | ToolbarItem(placement: .navigationBarLeading) {
44 | Button {
45 | dismiss()
46 | } label: {
47 | Image(systemName: "xmark")
48 | } // Button
49 | } // ToolbarItem
50 | } // toolbar
51 | } // NavigationView
52 | } // body
53 | }
54 |
55 | struct GuideCenterView_Previews: PreviewProvider {
56 | static var previews: some View {
57 | GuideCenterView()
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/GuideCenter/GuideFunc/ActivityGuideView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ActivityGuideView.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/08.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ActivityGuideView: View {
11 | var body: some View {
12 | ScrollView {
13 | VStack(alignment: .leading) {
14 | HStack {
15 | Text("Catch up with your friends' latest Git activities 👀")
16 | .font(.system(size: 22, weight: .light))
17 | .foregroundColor(.gsGray1)
18 |
19 | Spacer()
20 | }
21 |
22 | Divider()
23 |
24 | Text(
25 | """
26 | GitSpace provides **activity feed** for users to check on **Git-related activities** of the people they follow on GitHub, and be connected with their networks and communities. \nWish to learn more about what other professionals are up to? Check out the Activity tab on GitSpace!
27 | """)
28 | .padding(.vertical)
29 |
30 | } // VStack
31 | .padding(.horizontal)
32 | .lineSpacing(2.5)
33 | } // ScrollView
34 | .navigationBarTitle("Activity")
35 | } // body
36 | }
37 |
38 | struct ActivityGuideView_Previews: PreviewProvider {
39 | static var previews: some View {
40 | ActivityGuideView()
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/GuideCenter/GuideFunc/ChatGuideView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatGuideView.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/07.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ChatGuideView: View {
11 | var body: some View {
12 | ScrollView {
13 | VStack(alignment: .leading) {
14 | HStack {
15 | Text("Connect with contributors of your starred repositories 👥")
16 | .font(.system(size: 22, weight: .light))
17 | .foregroundColor(.gsGray1)
18 |
19 | Spacer()
20 | }
21 |
22 | Divider()
23 |
24 | Text(
25 | """
26 | Once the Knock message is approved, you are all set to start your conversations! \nIt is your chance to talk to worldwide developers with awesome projects on GitHub, build connections, as well as to be exposed within the community. You are free to ask questions, give suggestions, offer a job interview, and more just like on any other chatting app. \nPlease remember that we are all unfamiliar to each other, and that **we must respect one another in the community.** Please be reasonable, gentle, and considerate with your language.
27 | """)
28 | .padding(.vertical)
29 |
30 |
31 | } // VStack
32 | .padding(.horizontal)
33 | .lineSpacing(2.5)
34 | } // ScrollView
35 | .navigationBarTitle("Chat")
36 | } // body
37 | }
38 |
39 | struct ChatGuideView_Previews: PreviewProvider {
40 | static var previews: some View {
41 | ChatGuideView()
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Home/ActivityView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ActivityView.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/01/18.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ActivityView: View {
11 |
12 | @EnvironmentObject var gitHubAuthManager: GitHubAuthManager
13 | @ObservedObject var eventViewModel: EventViewModel
14 |
15 | var body: some View {
16 |
17 | ScrollView {
18 | ForEach(eventViewModel.events) { event in
19 | // event, gitHubUser, Repository 필요
20 | // 인덱스로 접근하면 안되던뎅
21 | ActivityFeedView(eventViewModel: eventViewModel, event: event)
22 | Divider()
23 | }
24 | } // ScrollView
25 | .refreshable {
26 | Task{
27 | guard let currentGitHubUser = gitHubAuthManager.authenticatedUser?.login else { return }
28 | try await eventViewModel.requestAuthenticatedUserReceivedEvents(who: currentGitHubUser)
29 | }
30 | }
31 | } // body
32 | }
33 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Home/ContributorListSkeletonCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContributorListSkeletonCell.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/03/12.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContributorListSkeletonCell: View {
11 |
12 | @State var opacity: CGFloat = 0.4
13 |
14 | var body: some View {
15 | VStack {
16 | Image("ProfilePlaceholder")
17 | .resizable()
18 | .aspectRatio(contentMode: .fit)
19 | .clipShape(Circle())
20 | .frame(width: 40, height: 40)
21 | .modifier(BlinkingSkeletonModifier(opacity: opacity, shouldShow: true))
22 | }
23 | .task {
24 | withAnimation(.linear(duration: 1.0).repeatForever(autoreverses: true)) {
25 | self.opacity = opacity == 0.4 ? 0.8 : 0.4
26 | }
27 | }
28 |
29 | }
30 | }
31 |
32 |
33 | struct ContributorListSkeletonCell_Previews: PreviewProvider {
34 | static var previews: some View {
35 | ContributorListSkeletonCell()
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Home/HomeCardSkeletonCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HomeCardSkeletonCell.swift
3 | // GitSpace
4 | //
5 | // Created by 정예슬 on 2023/02/15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct HomeCardSkeletonCell: View {
11 | @State var opacity: CGFloat = 0.4
12 |
13 | var body: some View {
14 | GSCanvas.CustomCanvasView.init(style: .primary, content: {
15 | /* 캔버스 내부: */
16 | Group {
17 | NavigationLink { }
18 | label: {
19 | VStack(alignment: .leading, spacing: 10) {
20 | Text("repo owner")
21 | .multilineTextAlignment(.leading)
22 | .modifier(BlinkingSkeletonModifier(opacity: opacity, shouldShow: true))
23 |
24 | Text("this is repo name")
25 | .multilineTextAlignment(.leading)
26 | .modifier(BlinkingSkeletonModifier(opacity: opacity, shouldShow: true))
27 |
28 | Text("Repo description")
29 | .multilineTextAlignment(.leading)
30 | .frame(maxWidth: .infinity, alignment: .leading)
31 | .modifier(BlinkingSkeletonModifier(opacity: opacity, shouldShow: true))
32 | }
33 | }
34 | }
35 | })
36 | .task {
37 | withAnimation(.linear(duration: 1.0).repeatForever(autoreverses: true)){
38 | self.opacity = opacity == 0.4 ? 0.8 : 0.4
39 | }
40 | }
41 | .padding(.horizontal, 20)
42 | .padding(.vertical, 10)
43 | }
44 | }
45 |
46 | struct HomeCardSkeletonCell_Previews: PreviewProvider {
47 | static var previews: some View {
48 | HomeCardSkeletonCell()
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Home/RepositoryCardView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RepositoryCardView.swift
3 | // GitSpace
4 | //
5 | // Created by Da Hae Lee on 2023/02/05.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // MARK: - Repository Card View
11 | /// Starred View에서 사용되는 Repository를 감싸는 Card View입니다.
12 | struct RepositoryCardView: View {
13 | @Environment(\.colorScheme) var colorScheme
14 | var content: () -> Content
15 |
16 | init(@ViewBuilder content: @escaping () -> Content) {
17 | self.content = content
18 | }
19 |
20 | // FIXME: 배경색을 GScolor로 바꿔줘야 함
21 | /// systemGray 컬러를 임시 방편으로 다크모드에 대응하도록 설정하였다.
22 | var body: some View {
23 | Group(content: content)
24 | .background(colorScheme == .light ? .white : Color(.systemGray4))
25 | .cornerRadius(17)
26 | .shadow(
27 | color: Color(.systemGray6),
28 | radius: 8,
29 | x: 0, y: 2)
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Knock/SendKnock/BeforeSendKnockSection.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BeforeSendKnockSection.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/05/08.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct BeforeSendKnockSection: View {
11 |
12 | @State var targetGithubUser: GithubUser?
13 | @Binding var showKnockGuide: Bool
14 |
15 | var body: some View {
16 | if let targetGithubUser {
17 | VStack(alignment: .center, spacing: 10) {
18 | HStack(spacing: 5) {
19 | GSText.CustomTextView(
20 | style: .body1,
21 | string: "It's the first message to")
22 | GSText.CustomTextView(
23 | style: .title3,
24 | string: "\(targetGithubUser.login)!")
25 | }
26 |
27 | HStack(spacing: 5) {
28 | Text("Would you like to")
29 | Button {
30 | showKnockGuide.toggle()
31 | } label: {
32 | Text("Knock")
33 | .bold()
34 | }
35 | Text("?")
36 | .padding(.leading, -4)
37 | }
38 | .padding(.top, -8)
39 |
40 | GSText.CustomTextView(
41 | style: .caption1,
42 | string:
43 | """
44 | Please select the purpose of the chat so that the other person can understand your intention.
45 | """)
46 | }
47 | .multilineTextAlignment(.center)
48 | .padding(.horizontal, 20)
49 | }
50 | }
51 | }
52 |
53 | struct BeforeSendKnockSection_Previews: PreviewProvider {
54 | static var previews: some View {
55 | BeforeSendKnockSection(
56 | showKnockGuide: .constant(false)
57 | )
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Notification/NotificationView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NotificationView.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/07.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct NotificationView: View {
11 |
12 | var body: some View {
13 |
14 | ScrollView {
15 |
16 | ForEach(0..<10) { _ in
17 | KnockNotificationCell()
18 | Divider()
19 | SystemNotificationCell()
20 | Divider()
21 | }
22 |
23 | }
24 | // .padding(.top, 20)
25 | .navigationBarTitle("Notifications")
26 | .navigationBarTitleDisplayMode(.inline)
27 |
28 |
29 | }
30 | }
31 |
32 | struct NotificationView_Previews: PreviewProvider {
33 | static var previews: some View {
34 | NavigationView {
35 | NotificationView()
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Notification/SystemNotificationCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SystemNotificationCell.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/07.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct SystemNotificationCell: View {
11 | var body: some View {
12 | HStack(spacing: 25) {
13 |
14 | Image("GitSpace-MainKnockView")
15 | .resizable()
16 | .aspectRatio(contentMode: .fit)
17 | .frame(width: 50, height: 50)
18 |
19 | GSText.CustomTextView(style: .body1, string: "Some System Message")
20 |
21 | Spacer()
22 | VStack {
23 | Spacer()
24 | GSText.CustomTextView(style: .caption2, string: "\("1") 시간 전")
25 | }
26 | }
27 | .padding(.top, 10)
28 | .padding(.horizontal, 20)
29 |
30 | }
31 | }
32 |
33 | struct SystemNotificationCell_Previews: PreviewProvider {
34 | static var previews: some View {
35 | SystemNotificationCell()
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Profile/MainProfileView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // profileDetailView.swift
3 | // GitSpace
4 | //
5 | // Created by 정예슬 on 2023/01/17.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // 사용자의 프로필 뷰
11 | // TODO: - ToolBar Item들 네비게이션으로 다른 뷰 연결
12 |
13 | struct MainProfileView: View {
14 |
15 | @State private var showGuideCenter: Bool = false
16 |
17 | var body: some View {
18 | CurrentUserProfileView()
19 | // FIXME: - 추후 네비게이션 타이틀 지정 (작성자: 제균)
20 | .navigationTitle("")
21 | .toolbar {
22 | ToolbarItemGroup(placement: .navigationBarTrailing){
23 | Button {
24 | showGuideCenter.toggle()
25 | } label: {
26 | Image(systemName: "info.circle")
27 | .foregroundColor(.primary)
28 | }
29 | .padding(.trailing, -10)
30 |
31 | NavigationLink {
32 | SetMainView()
33 | } label: {
34 | Image(systemName: "gearshape")
35 | .foregroundColor(.primary)
36 | }
37 | }
38 | }
39 | .fullScreenCover(isPresented: $showGuideCenter) {
40 | GuideCenterView()
41 | }
42 | }
43 | }
44 |
45 | struct MainProfileView_Previews: PreviewProvider {
46 | static var previews: some View {
47 | NavigationView{
48 | MainProfileView()
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Settings/AppSettings/SetTextMediaView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SetTextMediaView.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/09.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct SetTextMediaView: View {
11 |
12 | @AppStorage("isAutoCompleted") var isAutoCompleted: Bool = false
13 | @AppStorage("isEnterToSent") var isEnterToSent: Bool = false
14 | @AppStorage("isDataSaved") var isDataSaved: Bool = false
15 |
16 | var body: some View {
17 | List {
18 |
19 | Section {
20 | Toggle(isOn: $isAutoCompleted) {
21 | Text("Use Auto Complete")
22 | }
23 | .toggleStyle(SwitchToggleStyle(tint: .gsGreenPrimary))
24 |
25 | Toggle(isOn: $isEnterToSent) {
26 | Text("Press Enter to Send")
27 | }
28 | .toggleStyle(SwitchToggleStyle(tint: .gsGreenPrimary))
29 |
30 | } header: {
31 | Text("Keyboard")
32 | }
33 |
34 |
35 |
36 | // MARK: - DATA CONSUMPTION
37 | Section {
38 |
39 | Toggle(isOn: $isDataSaved) {
40 | Text("Data Saving Mode")
41 | }
42 | .toggleStyle(SwitchToggleStyle(tint: .gsGreenPrimary))
43 |
44 | } header: {
45 | Text("DATA CONSUMPTION")
46 | } footer: {
47 | Text("When this is on, images will be sent in lower quality on cellular networks to reduce data usage.")
48 | }
49 |
50 | } // List
51 | .navigationBarTitle("Text & Media", displayMode: .inline)
52 | }
53 | }
54 |
55 | struct SetTextMediaView_Previews: PreviewProvider {
56 | static var previews: some View {
57 | SetTextMediaView()
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Settings/Legal/SetLicensesView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SetLicensesView.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/08.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct SetLicensesView: View {
11 | var body: some View {
12 | ScrollView {
13 | Text("""
14 | **MIT License**
15 |
16 | Copyright (c) 2023 **GitSpace**
17 |
18 | Permission is hereby granted, free of charge, to any person obtaining a copy
19 | of this software and associated documentation files (the "Software"), to deal
20 | in the Software without restriction, including without limitation the rights
21 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
22 | copies of the Software, and to permit persons to whom the Software is
23 | furnished to do so, subject to the following conditions:
24 |
25 | The above copyright notice and this permission notice shall be included in all
26 | copies or substantial portions of the Software.
27 |
28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
33 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34 | SOFTWARE.
35 | """)
36 | .multilineTextAlignment(.leading)
37 | .font(.body)
38 | .padding(.horizontal, 20)
39 | } // ScrollView
40 | .navigationBarTitle("Licenses", displayMode: .inline)
41 | } // body
42 | }
43 |
44 | struct SetLicensesView_Previews: PreviewProvider {
45 | static var previews: some View {
46 | SetLicensesView()
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/GitSpace/Sources/Views/Settings/SetPrivacySafetyView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SetPrivacySafetyView.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/09.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct SetPrivacySafetyView: View {
11 | var body: some View {
12 | List {
13 | // MARK: - APP MANAGEMENT
14 | Section {
15 | Button(role: .cancel) {
16 | print("모든 캐시를 ;;삭제할거임")
17 | } label: {
18 | HStack {
19 | Text("Clear cache")
20 | Spacer()
21 | Text("\(10) MB")
22 | .foregroundColor(.gsGray2)
23 | }
24 | }
25 | } header: {
26 | Text("app Management")
27 | }
28 |
29 | } // List
30 | .navigationBarTitle("Privacy & Safety", displayMode: .inline)
31 | }
32 | }
33 |
34 | struct SetPrivacySafetyView_Previews: PreviewProvider {
35 | static var previews: some View {
36 | SetPrivacySafetyView()
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Components/GSCanvas.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GSCanvas.swift
3 | // GitSpace
4 | //
5 | // Created by yeeunchoi on 2023/02/03.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 |
12 | struct GSCanvas {
13 | public enum GSCanvasStyle {
14 | case primary
15 | /* 카드 스타일은 나중에 더 추가될 가능성 있음 (예: 프로필 뷰에서 자기소개 카드) */
16 | }
17 |
18 | struct CustomCanvasView: View {
19 |
20 | public let style: GSCanvasStyle
21 | public let content: Content
22 |
23 | var body: some View {
24 |
25 | content
26 | .modifier(GSCanvasModifier(style: .primary))
27 | }
28 |
29 | init(style: GSCanvasStyle, @ViewBuilder content: () -> Content) {
30 | self.style = style
31 | self.content = content()
32 | }
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Components/GSTabBarBackGround.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GSTabBarBackGround.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct GSTabBarBackGround {
11 |
12 | /**
13 | 커스텀 탭바의 배경이 Rectangle인지 RoundedRectangle인지 선택할 수 있습니다. 또한 연관값으로 배경색상과, RoundedRectangle의 경우 cornerRadius값을 입력해주시면 됩니다.
14 | */
15 | public enum GSTabBarBackGroundStyle {
16 | case rectangle(backGroundColor: Color)
17 | case roundedRectangle(backGroundColor: Color, cornerRadius: CGFloat)
18 | }
19 |
20 | /**
21 | 탭바는 가로 고정이기 때문에 HStack으로 두었습니다.
22 | */
23 | struct CustomTabBarBackgroundView: View {
24 |
25 | public let style: GSTabBarBackGroundStyle
26 | public let content: Content
27 |
28 | var body: some View {
29 |
30 | switch style {
31 |
32 | case .rectangle(let backGroundColor):
33 | HStack {
34 | content
35 | }
36 | .edgesIgnoringSafeArea(.bottom)
37 | .tabBarBackGroundModifier(style: .rectangle(backGroundColor: backGroundColor))
38 |
39 | case .roundedRectangle(let backGroundColor, let cornerRadius):
40 | HStack {
41 | content
42 | }
43 | .edgesIgnoringSafeArea(.bottom)
44 | .tabBarBackGroundModifier(style: .roundedRectangle(backGroundColor: backGroundColor, cornerRadius: cornerRadius))
45 | }
46 | }
47 |
48 | init(style: GSTabBarBackGroundStyle, @ViewBuilder content: () -> Content) {
49 | self.style = style
50 | self.content = content()
51 | }
52 |
53 | }
54 |
55 | }
56 |
57 |
58 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/CustomHostingController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CustomHostingController.swift
3 | // GitSpace
4 | //
5 | // Created by Da Hae Lee on 2023/04/20.
6 | //
7 |
8 | import SwiftUI
9 |
10 | class CustomHostingController: UIHostingController {
11 |
12 | override func viewDidLoad() {
13 | view.backgroundColor = .systemBackground
14 | print(rootView)
15 | // setting presentation controller properties
16 | if let presentationController = presentationController as? UISheetPresentationController {
17 |
18 | switch rootView {
19 | case is ReportView:
20 | presentationController.detents = [
21 | .large()
22 | ]
23 | default:
24 | presentationController.detents = [
25 | .medium(),
26 | .large()
27 | ]
28 | }
29 | // to show grab protion
30 | presentationController.prefersGrabberVisible = true
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/DesignSystemStyleEnums.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DesignSystemStyleEnums.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | public enum GSButtonStyle {
11 | case primary(isDisabled: Bool)
12 | case secondary(isDisabled: Bool)
13 |
14 | /**
15 | 레포지토리뷰, 스타뷰, 필터뷰에서는 적용된 상태의 스타일을 적용하여 Green, Yellow 컬러로 tint한다
16 | AddTagSheetView에서는 isSelectedInAddTagSheet에 유저가 태그를 선택했는지 여부를 할당하고 흑백 컬러로 분기한다.
17 | */
18 | case tag(
19 | isAppliedInView: Bool? = nil,
20 | isSelectedInAddTagSheet: Bool? = nil
21 | )
22 | case plainText(isDestructive: Bool)
23 | case homeTab(tabName: String,
24 | tabSelection: Binding)
25 | }
26 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/Button+ColorScheme.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Button+.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/01/24.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension Button {
11 | /// - Important: ONLY USED IN DESIGN SYSTEM CODE
12 | public func buttonColorSchemeModifier(style: GSButtonStyle) -> some View {
13 | modifier(GSButtonStyleModifiers(style: style))
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/CGFloat+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGFloat+.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/05/15.
6 | //
7 |
8 | import Foundation
9 |
10 | extension CGFloat {
11 | var asInt: Int {
12 | switch self {
13 | case .infinity, .nan:
14 | return 0
15 | default:
16 | return Int(self)
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/Date+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Date+.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/16.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Date {
11 | private static var formatter: RelativeDateTimeFormatter = {
12 | let formatter = RelativeDateTimeFormatter()
13 | formatter.unitsStyle = .full
14 | return formatter
15 | }()
16 |
17 | func timeAgoDisplay() -> String {
18 | Self.formatter.localizedString(for: self, relativeTo: Date())
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/Date+DateDiff.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Date+DateDiff.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/01/31.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Date {
11 | static func -(recent: Date, previous: Date) -> (month: Int?, day: Int?, hour: Int?, minute: Int?, second: Int?) {
12 | let day = Calendar.current.dateComponents([.day], from: previous, to: recent).day
13 | let month = Calendar.current.dateComponents([.month], from: previous, to: recent).month
14 | let hour = Calendar.current.dateComponents([.hour], from: previous, to: recent).hour
15 | let minute = Calendar.current.dateComponents([.minute], from: previous, to: recent).minute
16 | let second = Calendar.current.dateComponents([.second], from: previous, to: recent).second
17 |
18 | return (month: month, day: day, hour: hour, minute: minute, second: second)
19 | }
20 | }
21 |
22 | extension Date {
23 | public func formattedDateString() -> String {
24 | let dateFormatter = DateFormatter()
25 | dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
26 | return dateFormatter.string(from: self)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/Int+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Int+.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/05/15.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Int {
11 | var asFloat: CGFloat {
12 | return CGFloat(self)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/String+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Array+String.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/12.
6 | //
7 |
8 | import Foundation
9 |
10 | extension String {
11 | /// 영어의 소대문자 구분 없이 문자열을 포함하는지를 확인 후 Bool 을 리턴하는 메소드.
12 | public func contains(
13 | _ string: String,
14 | isCaseInsensitive caseInsensitive: Bool
15 | ) -> Bool {
16 | caseInsensitive
17 | ? range(of: string, options: .caseInsensitive) != nil
18 | : contains(string)
19 | }
20 |
21 | public func stringToDate() -> Date {
22 | let dateFormatter = DateFormatter()
23 | dateFormatter.locale = Locale(identifier: "en_US_POSIX")
24 | // set locale to reliable US_POSIX
25 | dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
26 | guard let date = dateFormatter.date(from: self) else { return Date() }
27 | return date
28 | }
29 |
30 | /// Base64 인코딩
31 | public var asBase64: String? {
32 | let utf8Data = self.data(using: .utf8)
33 | return utf8Data?.base64EncodedString()
34 | }
35 |
36 | /// Base64 디코딩
37 | public var decodedBase64String: String? {
38 | let data: Data? = Data(base64Encoded: self)
39 | guard let data else { return nil }
40 | return String(data: data, encoding: .utf8)
41 |
42 | public func isValidPattern(pattern: String) -> Bool {
43 | return self.range(of: pattern, options: .regularExpression) != nil
44 |
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/UIFont+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIFont+.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/02/05.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension UIFont {
11 | // MARK: Method - SwiftUI system Font를 UIFont 타입으로 변환하는 함수
12 | static func fontToUIFont(from font: Font) -> UIFont {
13 | let style: UIFont.TextStyle
14 | switch font {
15 | case .largeTitle: style = .largeTitle
16 | case .title: style = .title1
17 | case .title2: style = .title2
18 | case .title3: style = .title3
19 | case .headline: style = .headline
20 | case .subheadline: style = .subheadline
21 | case .callout: style = .callout
22 | case .caption: style = .caption1
23 | case .caption2: style = .caption2
24 | case .footnote: style = .footnote
25 | case .body: fallthrough
26 | default: style = .body
27 | }
28 | return UIFont.preferredFont(forTextStyle: style)
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/UIScreen+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIScreen+.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/14.
6 | //
7 |
8 | import UIKit
9 |
10 | extension UIScreen {
11 | /// - Mini, SE: 375.0
12 | /// - pro: 390.0
13 | /// - pro max: 428.0
14 | var isWiderThan375pt: Bool { self.bounds.size.width > 375 }
15 | }
16 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/View+DesignSystem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // View+DesignSystem.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension View {
11 | public func navigationLinkStyleModifier(navigationStyle: GSButtonStyle) -> some View {
12 | modifier(GSButtonStyleModifiers(style: navigationStyle))
13 | }
14 |
15 | public func labelHierarchyModifier(style: Constant.LabelHierarchy) -> some View {
16 | modifier(GSLabelModifier(style: style))
17 | }
18 |
19 | public func shadowColorSchemeModifier() -> some View {
20 | modifier(ShadowColorSchemeModifier())
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/View+TextEditorBackgroundColor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // View+TextEditorBackgroundColor.swift
3 | // GitSpace
4 | //
5 | // Created by Celan on 2023/07/06.
6 | //
7 |
8 | import SwiftUI
9 |
10 | public extension View {
11 | func textEditorBackgroundClear() -> some View {
12 | if #available(iOS 16.0, *) {
13 | return scrollContentBackground(.hidden)
14 | } else {
15 | return onAppear {
16 | UITextView.appearance().backgroundColor = .clear
17 | }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Extensions/View+cornerRadius.swift:
--------------------------------------------------------------------------------
1 | //
2 | // View+cornerRadius.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension View {
11 | func cornerRadius(_ radius:CGFloat, corners: UIRectCorner) -> some View {
12 | clipShape(RoundedCorner(radius: radius,corners: corners))
13 | }
14 | }
15 |
16 | struct RoundedCorner: Shape {
17 | var radius: CGFloat = .infinity
18 | var corners: UIRectCorner = .allCorners
19 |
20 | func path(in rect: CGRect) -> Path {
21 | let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
22 | return Path(path.cgPath)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/HalfSheetManager.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HalfSheetManager.swift
3 | // GitSpace
4 | //
5 | // Created by Da Hae Lee on 2023/04/20.
6 | //
7 |
8 | import SwiftUI
9 | import UIKit
10 |
11 | struct HalfSheetManager: UIViewControllerRepresentable {
12 | @Binding var isPresented: Bool
13 | var onDismiss: (() -> ())?
14 | var content: Content
15 | let controller = UIViewController()
16 |
17 | func makeCoordinator() -> Coordinator {
18 | return Coordinator(parent: self)
19 | }
20 |
21 | func makeUIViewController(context: Context) -> UIViewController {
22 | controller.view.backgroundColor = .clear
23 | return controller
24 | }
25 |
26 | func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
27 | if isPresented {
28 | let sheetController = CustomHostingController(rootView: content)
29 | sheetController.presentationController?.delegate = context.coordinator
30 | uiViewController.present(sheetController, animated: true)
31 | } else {
32 | // choosing view when showsheet toggled againg
33 | uiViewController.dismiss(animated: true)
34 | }
35 | }
36 |
37 | // On dismiss
38 | class Coordinator: NSObject, UISheetPresentationControllerDelegate {
39 | var parent: HalfSheetManager
40 |
41 | init(parent: HalfSheetManager) {
42 | self.parent = parent
43 | }
44 |
45 | func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
46 | parent.isPresented = false
47 | if parent.onDismiss != nil {
48 | parent.onDismiss!()
49 | }
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/KeyboardHandler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KeyboardHandler.swift
3 | // GitSpace
4 | //
5 | // Created by 최한호 on 2023/02/01.
6 | //
7 |
8 | import Combine
9 | import SwiftUI
10 |
11 | final class KeyboardHandler: ObservableObject {
12 | @Published private(set) var keyboardHeight: CGFloat = 0
13 |
14 | private var cancellable: AnyCancellable?
15 |
16 | private let keyboardWillShow = NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)
17 | .compactMap { ($0.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect)?.height }
18 |
19 | private let keyboardWillHide = NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)
20 | .map { _ in CGFloat.zero }
21 |
22 | init() {
23 | cancellable = Publishers.Merge(keyboardWillShow, keyboardWillHide).subscribe(on: DispatchQueue.main)
24 | .assign(to: \.self.keyboardHeight, on: self)
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/BlinkingSkeletonModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlinkingSkeletonModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 정예슬 on 2023/02/06.
6 | //
7 |
8 |
9 | import SwiftUI
10 |
11 | struct BlinkingSkeletonModifier: Animatable, ViewModifier {
12 |
13 | var opacity: Double
14 | var shouldShow: Bool
15 |
16 | var animatableData: Double {
17 | get { opacity }
18 | set { opacity = newValue }
19 | }
20 |
21 | func body(content: Content) -> some View {
22 | content
23 | .overlay(
24 | ZStack {
25 | //ZStack에서 애니메이션 처리를 할 때 zIndex 지정해주지 않으면 애니메이션 에러가 발생할 수 있음.
26 | Color.white.zIndex(0)
27 |
28 | //아래 있는 코드의 뷰가 더 상위에 떠야하므로 zIndex 1
29 | RoundedRectangle(cornerRadius: 8)
30 | .fill(.gray)
31 | .opacity(self.opacity).zIndex(1)
32 | }.opacity(self.shouldShow ? 1 : 0)
33 | )
34 | .cornerRadius(8)
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/ButtonLabelLayoutModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ButtonLabelLayoutModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | public struct ButtonLabelLayoutModifier: ViewModifier {
11 | public let buttonLabel: GSButton.GSButtonStyle
12 |
13 | public func body(content: Content) -> some View {
14 | switch buttonLabel {
15 | case .primary(let isDisabled):
16 | content
17 | .padding(.horizontal, 34)
18 | .padding(.vertical, 18)
19 | .frame(minWidth: 150)
20 | .foregroundColor(isDisabled ? Color.white : Color.primary)
21 | case .secondary(let isDisabled):
22 | content
23 | .padding(.horizontal, 23)
24 | .padding(.vertical, 13)
25 | .frame(minWidth: 80)
26 | .foregroundColor(isDisabled ? .white : Color.primary)
27 | case .tag(let isEditing, let isSelected):
28 | content
29 | .padding(.horizontal, 12)
30 | .padding(.vertical, 9)
31 | .frame(minWidth: 62)
32 | .foregroundColor(isSelected ? Color.primary : Color.white)
33 | case .homeTab:
34 | content
35 | .foregroundColor(Color.primary)
36 | case .plainText(let isDestructive):
37 | content
38 | .foregroundColor(isDestructive ? .gsRed : Color.primary)
39 | }
40 | }
41 |
42 | init(buttonLabel: GSButton.GSButtonStyle) {
43 | self.buttonLabel = buttonLabel
44 | }
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/GSCanvasModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GSCanvasColorSchemeModifier.swift
3 | // GitSpace
4 | //
5 | // Created by yeeunchoi on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 |
11 | public struct GSCanvasModifier: ViewModifier {
12 | @Environment(\.colorScheme) var colorScheme
13 |
14 | let style: GSCanvas.GSCanvasStyle
15 | let minHeight: CGFloat? = 50
16 |
17 |
18 | public func body(content: Content) -> some View {
19 | switch style {
20 | case .primary: // default style
21 | content
22 | .padding(20)
23 | .background(
24 | RoundedRectangle(cornerRadius: 17, style: .continuous)
25 | .fill(colorScheme == .dark ? Color.gsGray3 : Color.white)
26 | .frame(maxWidth: .infinity)
27 | .frame(minHeight: minHeight)
28 | .shadow(color: .gsGray2.opacity(colorScheme == .dark ? 0.0 : 0.3), radius: 6, x: 0, y: 2)
29 | )
30 | }
31 | }
32 |
33 |
34 | init(style: GSCanvas.GSCanvasStyle) {
35 | self.style = style
36 | }
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/GSTextEditorLayoutModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GSTextEditorLayoutModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/04/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct GSTextEditorLayoutModifier: ViewModifier {
11 |
12 | let font: Font
13 | let color: Color
14 | let lineSpace: CGFloat
15 | let maxHeight: CGFloat
16 | let horizontalInset: CGFloat
17 | let bottomInset: CGFloat
18 |
19 | func body(content: Content) -> some View {
20 | content
21 | .font(font)
22 | .foregroundColor(color)
23 | .lineSpacing(lineSpace)
24 | .frame(maxHeight: maxHeight)
25 | .padding(.horizontal, horizontalInset)
26 | .padding(.bottom, bottomInset)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/GSTextFieldLayoutModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GSTextFieldLayoutModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영, 이다혜, 최한호 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct GSTextFieldLayoutModifier: ViewModifier {
11 |
12 | public let style: GSTextField.GSTextFieldStyle
13 | public let const = Constant.TextFieldConst.self
14 |
15 | func body(content: Content) -> some View {
16 | switch style {
17 | case .searchBarField:
18 | content
19 | .foregroundColor(.primary)
20 | .padding(EdgeInsets(top: const.SEARCHBAR_INSET_VERTICAL,
21 | leading: const.SEARCHBAR_INSET_HORIZONTAL,
22 | bottom: const.SEARCHBAR_INSET_VERTICAL,
23 | trailing: const.SEARCHBAR_INSET_HORIZONTAL))
24 | // FIXME: gsGray3 추가 후 변경 필요
25 | .background(Color.gsGray3)
26 | .cornerRadius(const.SEARCHBAR_CORNER_RADIUS)
27 |
28 | case .addTagField:
29 | content
30 | .foregroundColor(.primary)
31 | .padding(EdgeInsets(top: const.ADDTAG_INSET_VERTICAL,
32 | leading: const.ADDTAG_INSET_HORIZONTAL,
33 | bottom: const.ADDTAG_INSET_VERTICAL,
34 | trailing: const.ADDTAG_INSET_HORIZONTAL))
35 | // FIXME: gsGray3 추가 후 변경 필요
36 | .background(Color.gsGray3)
37 | .cornerRadius(const.ADDTAG_CORNER_RADIUS)
38 | }
39 |
40 | }
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/PinnedViewHeaderModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PinnedViewHeaderModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/12.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct PinnedViewHeaderModifier: ViewModifier {
11 | func body(content: Content) -> some View {
12 | content
13 | .padding(.vertical, 12)
14 | .padding(.horizontal, 20)
15 | .frame(alignment: .leading)
16 | .background {
17 | LinearGradient(
18 | colors: [
19 | Color(.systemBackground),
20 | Color(.systemBackground).opacity(0.4)
21 | ],
22 | startPoint: .top,
23 | endPoint: .bottom
24 | )
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/ShadowColorSchemeModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ShadowColorSchemeModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // MARK: - SHADOW COLOR SCHEME MODIFIER
11 | public struct ShadowColorSchemeModifier: ViewModifier {
12 | @Environment(\.colorScheme) var colorScheme
13 |
14 | public func body(content: Content) -> some View {
15 | switch colorScheme {
16 | case .light:
17 | content
18 | .shadow(
19 | color: .gsYellowPrimary.opacity(0.21),
20 | radius: 9,
21 | x: 0,
22 | y: 9
23 | )
24 | case .dark:
25 | content
26 | .shadow(
27 | color: .gsGreenPrimary.opacity(0.29),
28 | radius: 36,
29 | x: 0,
30 | y: 14
31 | )
32 | @unknown default:
33 | content
34 |
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/TabBarBackgroundModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TabBarBackgroundModifier.swift
3 | // GitSpace
4 | //
5 | // Created by 박제균 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct TabBarBackgroundModifier: ViewModifier {
11 |
12 | let style: GSTabBarBackGround.GSTabBarBackGroundStyle
13 |
14 | init(backgroundStyle: GSTabBarBackGround.GSTabBarBackGroundStyle) {
15 | self.style = backgroundStyle
16 | }
17 |
18 | func body(content: Content) -> some View {
19 | switch style {
20 | case .rectangle(let backGroundColor):
21 | content
22 | .background(backGroundColor)
23 | case .roundedRectangle(let backGroundColor, let cornerRadius):
24 | content
25 | .background(backGroundColor)
26 | .cornerRadius(cornerRadius, corners: [.topLeft, .topRight])
27 | }
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Modifiers/ViewDidLoadModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewDidLoadModifier.swift
3 | // GitSpace
4 | //
5 | // Created by Da Hae Lee on 2023/02/27.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // MARK: ViewDidLoad 수정자
11 | /// 뷰가 한번 로드되었을 때를 감지하여 액션을 수행하게 하는 ViewDidLoad 수정자이다.
12 | struct ViewDidLoadModifier: ViewModifier {
13 | @State private var viewDidLoad: Bool = false
14 | let action: (() -> Void)?
15 |
16 | func body(content: Content) -> some View {
17 | content
18 | .onAppear {
19 | if viewDidLoad == false {
20 | viewDidLoad = true
21 | action?()
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/Utility.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Utility.swift
3 | // GitSpace
4 | //
5 | // Created by 원태영 on 2023/01/27.
6 | //
7 |
8 | import SwiftUI
9 | import FirebaseAuth
10 |
11 | enum Utility {
12 | // FIXME: loginUserID -> 유저 객체 참조로 변경하려하였으나, Model 연산 프로퍼티에서 유저 ID가 필요한 로직으로 구성하여 바로 포팅할 수 없음. 이후에 로직 수정 후 유저 객체로 변경 예정 230215 By. 태영
13 | static var loginUserID: String = ""
14 |
15 | static var MessageCellWidth: CGFloat {
16 | return UIScreen.main.bounds.width / 5 * 3
17 | }
18 |
19 | static var UIWidth: CGFloat {
20 | return UIScreen.main.bounds.width
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/GitSpace/Utilities/ViewHighlightColorStyle.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewHighlightColorStyle.swift
3 | // GitSpace
4 | //
5 | // Created by 이승준 on 2023/02/03.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // TODO: DEPRECATE
11 | struct ViewHighlightColorStyle: ButtonStyle {
12 | let style: Constant.LabelHierarchy
13 | @Environment(\.colorScheme) var colorScheme
14 |
15 | func makeBody(configuration: Self.Configuration) -> some View {
16 | configuration.label
17 | .background(
18 | configuration.isPressed
19 | ? Color.gsGreenPressed
20 | : colorSchemeBackgroundColor()
21 | )
22 | .cornerRadius(.infinity)
23 | }
24 |
25 | private func colorSchemeBackgroundColor() -> Color {
26 | switch colorScheme {
27 | case .light:
28 | return Color.gsGreenPrimary
29 | case .dark:
30 | return Color.gsYellowPrimary
31 | @unknown default:
32 | return Color.clear
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GitSpace/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | GitSpace
4 |
5 | Created by 최한호 on 2023/02/09.
6 |
7 | */
8 |
--------------------------------------------------------------------------------
/GitSpace/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | GitSpace
4 |
5 | Created by 최한호 on 2023/02/09.
6 |
7 | */
8 |
--------------------------------------------------------------------------------
/License:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 GitSpace
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/SUMMARY.md:
--------------------------------------------------------------------------------
1 | # Table of contents
2 |
3 | * [GitSpace](README.md)
4 | * [.github](.github/README.md)
5 | * [PULL\_REQUEST\_TEMPLATE](.github/PULL\_REQUEST\_TEMPLATE.md)
6 | * [ISSUE\_TEMPLATE](.github/issue\_template/README.md)
7 | * [\[BugFix\]](.github/ISSUE\_TEMPLATE/bug\_report.md)
8 | * [ISSUE\_TEMPLATE](.github/issue\_template-1/README.md)
9 | * [\[Docs\]](.github/ISSUE\_TEMPLATE/document\_template.md)
10 | * [ISSUE\_TEMPLATE](.github/issue\_template-2/README.md)
11 | * [\[Feat\]](.github/ISSUE\_TEMPLATE/feature\_template.md)
12 | * [docs](docs/README.md)
13 | * [feedback](docs/feedback/README.md)
14 | * [230119\_Feedback](docs/feedback/230119\_Feedback.md)
15 | * [retrospect](docs/retrospect/README.md)
16 | * [↩️ Retrospect](docs/retrospect/first\_sprint.md)
17 | * [기술 연구 자료](docs/tech/README.md)
18 | * [230120\_renderingMarkdown\_jegyun](docs/tech/230120\_renderingMarkdown\_jegyun.md)
19 | * [FireStore\_CollectionGroupQuery](docs/tech/FireStore\_CollectionGroupQuery.md)
20 | * [GitSpace 기술 연구]()
21 | * [Firestore\_Listener](docs/tech/Firestore\_Listener.md)
22 | * [DesignSystem](docs/tech/designsystem/README.md)
23 | * [GitSpace Design System Doc](docs/tech/DesignSystem/DesignSystem.md)
24 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # docs
2 |
3 |
--------------------------------------------------------------------------------
/docs/feedback/README.md:
--------------------------------------------------------------------------------
1 | # feedback
2 |
3 |
--------------------------------------------------------------------------------
/docs/retrospect/README.md:
--------------------------------------------------------------------------------
1 | # retrospect
2 |
3 |
--------------------------------------------------------------------------------
/docs/tech/230120_renderingMarkdown_jegyun.md:
--------------------------------------------------------------------------------
1 | # 기술검증
2 | ## GitHub Markdown API
3 |
4 | - 링크: [바로가기](https://docs.github.com/ko/rest/markdown?apiVersion=2022-11-28)
5 | - markdown 문서를 HTML 페이지 혹은 raw text로 제공
6 |
7 | ## 기존 GitStar에서 markdown을 받아오던 방법
8 |
9 | 1. 깃허브 레포지토리 컨텐츠 API를 사용하면 레포지토리의 정보에 접근할 수 있고, 키값중에 download_url가 존재한다.
10 | 2. download_url(raw.githubusercontent.com~)에 접속해보면 해당 url에서 raw content의 형태로 파일의 정보를 볼 수 있다.
11 | 3. 이러한 markdown data를 `URLSession`을 이용하여 raw content markdown을 Swift의 Data 타입으로 받아온다.
12 | 4. 받아온 데이터를 Client에서 utf8인코딩하여 String으로 변환한다.
13 | 5. GitHub markdown API를 사용하여 변환한 String을 Post Request로 보낸다.
14 | 6. 5의 Request에 대한 Response로 html 형식의 Data를 받아온다
15 | 7. 받아온 데이터를 utf8인코딩하여 String으로 변환한다.
16 | 8. 변환한 html String을 webview를 이용하여 보여준다.
17 |
18 |
19 | ## 새롭게 시도중인 방법
20 |
21 | - 외부 라이브러리를 사용하여 이를 SwiftUI View에 render하는 방법을 생각중
22 |
23 | ## GFM?
24 | - GitHub Flavored Markdown 은 줄여서 GFM 이라고도 하며, 현재 GitHub.com과 GitHub Enterprise 의 사용자 컨텐츠를 지원하는 Markdown의 한 종류(dialect)**입니다.
25 | - SwiftUI는 GFM을 지원하는중, iOS 15에서부터 (!!!)
26 | - 이와 관련된 애플의 오픈소스 라이브러리가 존재함
27 | - [깃허브 바로가기](https://github.com/apple/swift-markdown)
28 | - [Document 바로가기](https://apple.github.io/swift-markdown/documentation/markdown)
29 | - 확인결과 라이브러리에서 테이블이 아직 지원안됨
30 | - 테이블 이외에도 헤딩,,, 등 지원되지 않는것이 많음
31 |
32 | # References
33 | - https://phillip5094.tistory.com/22#-1.-gfm-%EC%A7%80%EC%9B%90
34 | - https://blog.eidinger.info/3-surprises-when-using-markdown-in-swiftui
35 | - https://iosexample.com/a-native-swiftui-view-for-rendering-markdown-text-in-an-ios-or-macos-app/
36 | - https://github.com/objecthub/swift-markdownkit
37 | - https://stackoverflow.com/questions/70643384/how-to-render-markdown-headings-in-swiftui-attributedstring
38 | - https://green1229.tistory.com/184
39 |
--------------------------------------------------------------------------------
/docs/tech/DesignSystem/README.md:
--------------------------------------------------------------------------------
1 | # DesignSystem
2 |
3 |
--------------------------------------------------------------------------------
/docs/tech/FireStore_CollectionGroupQuery.md:
--------------------------------------------------------------------------------
1 | # Collection Group
2 | FireStore 'collectionGroup' 쿼리에 대해 기술합니다.
3 |
4 | ## collectionGroup?
5 | FireStore DB는 컬렉션과 서브컬렉션 구조로 이루어져있는데, 기존에는 서브컬렉션에 접근하기 위해서 루트 컬렉션부터 타고 들어가야하는데, collectionGroup 쿼리를 이용하면 컬렉션의 이름을 통해서 위치에 상관없이 접근 가능합니다.
6 |
7 | ## 주의할 점
8 | - collectionGroup(컬렉션 이름)의 형태로 사용합니다.
9 | - collectionGroup은 FireStore에서 기본값으로 쿼리가 비활성화 되어 있습니다. 따라서 필요한 쿼리 컬렉션 필드 색인을 수동으로 지정해주어야합니다.
10 | - 단일 필드에 대한 색인과 복합 필드에 대한 색인이 분리되어있습니다.
11 | - 복합 필드 쿼리를 사용하는 경우, 지정한 필드들이 모두 쿼리 내용에 포함되어야합니다. (필요없더라도)
12 | - 복합 필드 쿼리에서 오름차순으로 지정된 경우, 오름차순'만' 가능합니다.
13 | - 색인 설정은 설정 완료 후 약 2~3분 소요됩니다.
14 | - 복합 쿼리 필드 지정 시 필드를 순서대로 설정하게 되는데, 정렬에 관련한 필드 순서를 아래로 두어야 쿼리 시 오류가 발생하지 않습니다. (이유 불명)
15 | - SQL 작성 시 where절 -> order by 순서로 작성하는 것과 유사하게 생각하면 됩니다.
16 |
17 |
18 | # 작성자
19 | 원태영, 정예슬
20 |
--------------------------------------------------------------------------------
/docs/tech/Firestore_Listener.md:
--------------------------------------------------------------------------------
1 | # FireStore Listener
2 | Firestore Listener를 활용하여 DB 문서의 변경을 감지하고, 이를 실시간으로 처리해줄 수 있습니다.
3 |
4 |
5 | ## Code
6 |
7 | ```swift
8 | var listener : ListenerRegistration?
9 |
10 | func addListener() {
11 | listener = database.collectionGroup("ChatCell").addSnapshotListener { snapshot, error in
12 | // snapshot이 비어있으면 에러 출력 후 리턴
13 | guard let snp = snapshot else {
14 | print("Error fetching documents: \(error!)")
15 | return
16 | }
17 | // document 변경 사항에 대해 감지해서 작업 수행
18 | snp.documentChanges.forEach { diff in
19 | switch diff.type {
20 | case .added:
21 | print("added")
22 | self.chatCells.append(self.fetchNewChat(newChat: diff.document))
23 | case .modified:
24 | print("modified")
25 | case .removed:
26 | print("removed")
27 | }
28 | }
29 | }
30 | }
31 |
32 | func removeListener() {
33 | guard listener != nil else {
34 | return
35 | }
36 | listener!.remove()
37 | }
38 |
39 | ```
40 |
41 | ## 참고사항
42 | - addSnapshotListener를 통해 실시간 감지 기능을 작동시킬 수 있습니다.
43 | - 실시간 감지 기능이 작동되는 동안 DB의 변경사항이 생기면 이를 감지합니다.
44 | - documentChanges를 통해 변경사항을 받을 수 있으며, 이는 세 가지 타입 중 하나에 해당합니다.
45 | - .added : 문서 추가
46 | - .modified : 문서 변경
47 | - .removed : 문서 삭제
48 | - 컬렉션, 문서ID 등을 통해 실시간 감지 대상 경로를 한정할 수 있습니다.
49 | - listener.remove() 함수를 호출하여 실시간 감지 기능을 중지할 수 있습니다.
50 | - remove하기 위해서는 addSnapshotListener 함수에서 리턴하는 ListenerRegistration 타입의 인스턴스를 변수에 저장해두어야합니다.
51 | - Listener 작동 시, 기존에 있는 문서들이 새로 추가된 것으로 인식하는 문제가 있습니다.
52 | - 문서가 추가될 때, 읽기 횟수는 새로 추가된 문서에 대해서만 증가합니다.
53 |
54 |
55 | # 작성자
56 | - 원태영, 정예슬
57 |
--------------------------------------------------------------------------------
/docs/tech/README.md:
--------------------------------------------------------------------------------
1 | ## 📒 기술 연구 자료
2 | > 23.01.16 ~ ing
3 |
4 | GitSpace 개발을 하면서 필요한 기술들을 연구한 자료입니다.
5 |
6 |
7 | ### Firebase
8 | * [Firestore CollectionGroup](https://github.com/APPSCHOOL1-REPO/finalproject-gitspace/blob/dev/docs/tech/FireStore_CollectionGroupQuery.md)
9 | * [FireStore Listener](https://github.com/APPSCHOOL1-REPO/finalproject-gitspace/blob/dev/docs/tech/Firestore_Listener.md)
10 |
11 | ### SSO
12 | (ing)
13 |
14 | ### Design System
15 | (ing)
16 |
17 | ###
18 |
--------------------------------------------------------------------------------