├── .github └── workflows │ ├── azure-static-web-apps-brave-ground-015c8bd1e.yml │ └── main_jithubauth.yml ├── .gitignore ├── JitHub.Auth ├── .gitignore ├── GithubAuth.cs ├── JitHub.Auth.csproj ├── Program.cs ├── Properties │ ├── ServiceDependencies │ │ └── JitHubAuth │ │ │ └── storage1.arm.json │ ├── launchSettings.json │ ├── serviceDependencies.JitHubAuth.json │ ├── serviceDependencies.json │ └── serviceDependencies.local.json └── host.json ├── JitHub.Controls.Editor ├── Editor.xaml ├── Editor.xaml.cs ├── EditorOptions.cs ├── JitHub.Controls.Editor.csproj └── Properties │ ├── AssemblyInfo.cs │ └── JitHub.Controls.Editor.rd.xml ├── JitHub.Services.GitHub.Contributions ├── ContributionService.cs ├── JitHub.Services.GitHub.Contributions.csproj └── Properties │ ├── AssemblyInfo.cs │ └── JitHub.Services.GitHub.Contributions.rd.xml ├── JitHub.Utilities.SVG ├── JitHub.Utilities.SVG.csproj ├── Properties │ ├── AssemblyInfo.cs │ └── JitHub.Utilities.SVG.rd.xml └── SVGRenderer.cs ├── JitHub.VSCode.Client ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ └── Wide310x150Logo.scale-200.png ├── JitHub.VSCode.Client.csproj ├── MainPage.xaml ├── Package.appxmanifest └── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml ├── JitHub.Web ├── App.razor ├── Client │ └── Program.cs ├── JitHub.Web.csproj ├── Pages │ ├── Authorize.razor │ └── Index.razor ├── Properties │ └── launchSettings.json ├── Shared │ ├── MainLayout.razor │ ├── MainLayout.razor.css │ ├── NavMenu.razor │ ├── NavMenu.razor.css │ └── SurveyPrompt.razor ├── _Imports.razor └── wwwroot │ ├── GitHub.png │ ├── JitHubLogo.png │ ├── appsettings.Development.json │ ├── css │ ├── app.css │ ├── auth.css │ ├── bootstrap │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ └── open-iconic │ │ ├── FONT-LICENSE │ │ ├── ICON-LICENSE │ │ ├── README.md │ │ └── font │ │ ├── css │ │ └── open-iconic-bootstrap.min.css │ │ └── fonts │ │ ├── open-iconic.eot │ │ ├── open-iconic.otf │ │ ├── open-iconic.svg │ │ ├── open-iconic.ttf │ │ └── open-iconic.woff │ ├── favicon.png │ ├── icon-192.png │ ├── index.html │ ├── login_fail.svg │ ├── login_success.svg │ ├── routes.json │ ├── ss1.png │ ├── ss2.png │ ├── ss3.png │ └── winui.png ├── JitHub.WebView ├── DragDropService.cs ├── JitHub.WebView.csproj ├── Microsoft.Win32 │ ├── Windows.Win32.Foundation.cs │ ├── Windows.Win32.Graphics.Gdi.cs │ ├── Windows.Win32.PInvoke.cs │ ├── Windows.Win32.System.SystemServices.cs │ ├── Windows.Win32.UI.Input.KeyboardAndMouse.cs │ ├── Windows.Win32.UI.Input.Pointer.cs │ ├── Windows.Win32.UI.WindowsAndMessaging.cs │ └── Windows.Win32.cs ├── Natives │ ├── IApplicationWindow_HwndInterop.cs │ ├── ICoreWindowInterop.cs │ ├── Macros.cs │ └── User32.cs ├── Properties │ ├── AssemblyInfo.cs │ └── JitHub.WebView.rd.xml ├── UI │ ├── WebView2Ex.Closing.cs │ ├── WebView2Ex.DragDrop.cs │ ├── WebView2Ex.Etc.cs │ ├── WebView2Ex.Events.Etc.cs │ ├── WebView2Ex.Events.Focus.cs │ ├── WebView2Ex.Events.Input.Keys.cs │ ├── WebView2Ex.Events.Input.Pointers.cs │ ├── WebView2Ex.Events.Managers.cs │ ├── WebView2Ex.Events.XAML.cs │ ├── WebView2Ex.Initialization.cs │ ├── WebView2Ex.Override.cs │ ├── WebView2Ex.PublicAPIs.cs │ ├── WebView2Ex.SmoothScroll.cs │ ├── WebView2Ex.Visibility.cs │ ├── WebView2Ex.Windowing.cs │ ├── WebView2Ex.cs │ └── WebView2ExBasicMapping.cs ├── Utility.cs └── WebView2Runtime.cs ├── JitHub.sln ├── JitHub ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── ContributorsProfilePhotos │ │ ├── GetProfile.png │ │ ├── JakubProfile.png │ │ ├── KeiraProfile.png │ │ └── NeroProfile.jpg │ ├── Data │ │ ├── SuccessAnimation.json │ │ └── in-app-purchase.xml │ ├── Fonts │ │ └── FluentIcons.ttf │ ├── Icons │ │ ├── github_logo_dark.png │ │ ├── github_logo_light.png │ │ ├── no_result.png │ │ └── select_one.png │ ├── JitHubLogo.png │ ├── JitHubLogoCropped.png │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── LinkLogos │ │ ├── GitHub.png │ │ ├── LinkedIn.png │ │ └── Twitter.png │ ├── LockScreenLogo.scale-200.png │ ├── Octocat.png │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ ├── Wide310x150Logo.scale-400.png │ ├── comments_icon_dark.svg │ ├── comments_icon_light.svg │ ├── commit_icon_dark.svg │ ├── commit_icon_light.svg │ ├── files_icon_dark.svg │ ├── files_icon_light.svg │ ├── merge_icon.svg │ ├── people_icon_dark.svg │ ├── people_icon_light.svg │ ├── pro_x_dark.png │ └── pro_x_light.png ├── Converters │ ├── Activities │ │ ├── CommitShaToShortConverter.cs │ │ ├── PushEventPayloadToCommitStringConverter.cs │ │ └── RefFullStringToBranchConverter.cs │ ├── BoolToVisibilityConverter.cs │ ├── BoolToVisibilityReverseConverter.cs │ ├── Code │ │ ├── IsExpandToFolderFilledIconConverter.cs │ │ └── IsExpandToFolderOutlineIconConverter.cs │ ├── Common │ │ ├── BoolToAccentColorConverter.cs │ │ ├── ColorToSolidBrushConverter.cs │ │ ├── DiffToMarkdownConverter.cs │ │ ├── ListToShorterListConverter.cs │ │ ├── MarkdownToMarkdownConfigConverter.cs │ │ ├── NumberToKizedStringConverter.cs │ │ ├── ObjToVisibilityConverter.cs │ │ ├── ReactionTypeToEmojiConverter.cs │ │ ├── SizeToLengthConverter.cs │ │ ├── StringToImageSourceConverter.cs │ │ ├── StringToSvgSourceConverter.cs │ │ └── UseGradientToForegroundConverter.cs │ ├── HexColorToColorStringConverter.cs │ ├── HexColorToForegroundConverter.cs │ ├── Issues │ │ ├── CommentDateBodyConverter.cs │ │ ├── IssueModelToIssueDetailViewModelConverter.cs │ │ ├── NumberOfCommentsToDescriptionDetailConverter.cs │ │ ├── NumberToHashTaggedStringConverter.cs │ │ ├── OpenDateToStringConverter.cs │ │ ├── OpenDateToStringForDetailConverter.cs │ │ ├── ReactionDictionaryToUserNameListConverter.cs │ │ ├── ReactionVotesMapToBoolConverter.cs │ │ ├── StringToVisibilityConverter.cs │ │ └── UserToDiscriptionStringConverter.cs │ ├── LanguageToVisibilityConverter.cs │ ├── OpenStatusToColorConverter.cs │ ├── PullRequests │ │ ├── IssueCommentNodeToUserCommentBlockViewModelConverter.cs │ │ ├── MergeStateToStringConverter.cs │ │ ├── PullRequestModelToPullRequestDetailViewModelConverter.cs │ │ └── ReviewNodeToViewModelConverter.cs │ ├── RepoContentNodeToMarkDownConverter.cs │ ├── RepoStatusIconConverter.cs │ ├── StringToEnabledConverter.cs │ └── TimeAgoConverter.cs ├── Helpers │ ├── ActivityDataTemplateSelector.cs │ ├── CodeViewTreeItemTemplateSelector.cs │ ├── Extensions.cs │ ├── FilterSelectionTemplateSelector.cs │ ├── IssueEventTemplateSelector.cs │ ├── IssueSideItemTemplateSelector.cs │ ├── PRConversationDataTemplateSelector.cs │ ├── PlatformHelper.cs │ ├── RepoIconTemplateSelector.cs │ ├── RichEditBoxExtension.cs │ └── SuccessAnimation.cs ├── JitHub.csproj ├── Models │ ├── Account.cs │ ├── ActivitySource.cs │ ├── Base │ │ ├── EmojiHost.cs │ │ ├── RepoSelectableItemModel.cs │ │ ├── RepoType.cs │ │ └── SelectableItem.cs │ ├── CodeBranchRef.cs │ ├── CommandArgs │ │ └── IssueFormArgs.cs │ ├── CommandableCommit.cs │ ├── CommitsSource.cs │ ├── Credential.cs │ ├── CreditPersonale.cs │ ├── EventfulCollection.cs │ ├── FailedRepo.cs │ ├── FeaturePurchaseState.cs │ ├── Filter │ │ ├── DateFilter.cs │ │ ├── DropdownFilter.cs │ │ ├── FilterUnit.cs │ │ ├── Selection.cs │ │ └── TextFilter.cs │ ├── FullPullRequestCommit.cs │ ├── IssueSidePanelItem.cs │ ├── IssueSource.cs │ ├── JitHubCommand.cs │ ├── License.cs │ ├── MenuItem.cs │ ├── NavArgs │ │ ├── CodeViewerNavArg.cs │ │ ├── CommitPageNavArg.cs │ │ ├── IssueNavArg.cs │ │ ├── ModalArg.cs │ │ ├── PageNavArg.cs │ │ ├── PullRequestConvPageNavArg.cs │ │ ├── PullRequestPageNavArg.cs │ │ └── RepoDetailPageArgs.cs │ ├── PRConversation │ │ ├── CommitNode.cs │ │ ├── ConversationNode.cs │ │ ├── EventNode.cs │ │ ├── IssueCommentNode.cs │ │ ├── ReviewCommentNode.cs │ │ └── ReviewNode.cs │ ├── PullRequestSource.cs │ ├── RepoContentNode.cs │ ├── RepoModel.cs │ ├── SelectableLabel.cs │ ├── SelectableRepoModel.cs │ ├── SelectableUser.cs │ ├── SettingsItem.cs │ ├── SimpleFormData.cs │ ├── ThemeConst.cs │ └── UISize.cs ├── Package.appxmanifest ├── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml ├── Routers │ └── RouterBase.cs ├── Services │ ├── AccountService.cs │ ├── AppConfig.cs │ ├── AuthService.cs │ ├── CommandService.cs │ ├── FeatureService.cs │ ├── GitHubService.Post.cs │ ├── GitHubService.cs │ ├── GlobalViewModel.cs │ ├── IAccountService.cs │ ├── IAppConfig.cs │ ├── IAuthService.cs │ ├── ICommandService.cs │ ├── IGitHubService.cs │ ├── INotificationService.cs │ ├── ISettingService.cs │ ├── IThemeService.cs │ ├── ModalService.cs │ ├── NavigationService.cs │ ├── NotificationService.cs │ ├── SettingService.cs │ └── ThemeService.cs ├── Strings │ ├── bn-BD │ │ └── Resources.resw │ ├── de │ │ └── Resources.resw │ ├── el │ │ └── Resources.resw │ ├── en-US │ │ └── Resources.resw │ ├── es │ │ └── Resources.resw │ ├── fr │ │ └── Resources.resw │ ├── hu-HU │ │ └── Resources.resw │ ├── it │ │ └── Resources.resw │ ├── pt │ │ └── Resources.resw │ ├── tr-TR │ │ └── Resources.resw │ ├── vi │ │ └── Resources.resw │ └── zh-Hans │ │ └── Resources.resw ├── Styles │ ├── Buttons.xaml │ ├── CalendarDatePicker.xaml │ ├── Color.xaml │ ├── ComboBox.xaml │ ├── Container.xaml │ ├── CustomListDetailView.xaml │ ├── CustomListItem.xaml │ ├── DatePicker.xaml │ ├── NavigationView.xaml │ ├── TabView.xaml │ ├── TabViewTheme.xaml │ ├── TextBlock.xaml │ ├── Theme.xaml │ └── WinUICommonColor.xaml ├── ViewModels │ ├── ActivityListViewModel.cs │ ├── ActivityViewModels │ │ ├── ActivityViewModel.cs │ │ ├── CheckRunActivityViewModel.cs │ │ ├── CheckSuiteActivityViewModel.cs │ │ ├── CommitCommentActivityViewModel.cs │ │ ├── CreateActivityViewModel.cs │ │ ├── DeleteActivityViewModel.cs │ │ ├── ForkActivityViewModel.cs │ │ ├── GollumActivityViewModel.cs │ │ ├── IssueActivityViewModel.cs │ │ ├── IssueCommentActivityViewModel.cs │ │ ├── MemberActivityViewModel.cs │ │ ├── PublicActivityViewModel.cs │ │ ├── PullRequestActivityViewModel.cs │ │ ├── PullRequestCommentActivityViewModel.cs │ │ ├── PullRequestReviewActivityViewModel.cs │ │ ├── PushActivityViewModel.cs │ │ ├── PushWebhookActivityViewModel.cs │ │ ├── ReleaseActivityViewModel.cs │ │ ├── SponsorshipActivityViewModel.cs │ │ ├── StarredActivityViewModel.cs │ │ ├── StatusActivityViewModel.cs │ │ └── WatchActivityViewModel.cs │ ├── Base │ │ ├── LoadableViewModel.cs │ │ ├── RepoListViewModel.cs │ │ └── RepoViewModel.cs │ ├── CommitViewModels │ │ ├── CommitDetailViewModel.cs │ │ └── RepoCommitsViewModel.cs │ ├── DashboardViewModel.cs │ ├── DevConsoleViewModel.cs │ ├── EmojiViewModels │ │ └── EmojiPanelViewModel.cs │ ├── FileDiffViewModel.cs │ ├── IssueViewModels │ │ ├── IssueSideBarViewModel.cs │ │ ├── ReactionBlockViewModel.cs │ │ ├── RepoIssueDetailViewModel.cs │ │ ├── RepoIssuePostingViewModel.cs │ │ ├── RepoIssueViewModel.Filter.cs │ │ ├── RepoIssueViewModel.cs │ │ └── UserIssueListViewModel.cs │ ├── LoginViewModel.cs │ ├── MarkdownFormViewModel.cs │ ├── PullRequestViewModels │ │ ├── ConversationViewModels │ │ │ ├── ReviewCommentViewModel.cs │ │ │ └── ReviewNodeViewModel.cs │ │ ├── MergeFormViewModel.cs │ │ ├── PullRequestCommitsViewModel.cs │ │ ├── PullRequestConversationViewModel.cs │ │ ├── RepoPullRequestDetailViewModel.cs │ │ ├── RepoPullRequestEditViewModel.cs │ │ ├── RepoPullRequestPostingViewModel.cs │ │ ├── RepoPullRequestViewModel.Filter.cs │ │ └── RepoPullRequestViewModel.cs │ ├── RepositoryViewModels │ │ ├── RepoDetailViewModel.cs │ │ ├── RepoFormViewModel.cs │ │ ├── RepoListViewModel.cs │ │ ├── RepoManageViewModel.cs │ │ ├── RepoSearchResultViewModel.cs │ │ └── RepoSideBarViewModel.cs │ ├── SettingsViewModel.cs │ ├── ShellViewModel.cs │ └── UserViewModel │ │ ├── ProfileButtonViewModel.cs │ │ └── UserCommentBlockViewModel.cs └── Views │ ├── Controls │ ├── Activity │ │ ├── CommitCommentActivity.xaml │ │ ├── CommitCommentActivity.xaml.cs │ │ ├── CreateActivity.xaml │ │ ├── CreateActivity.xaml.cs │ │ ├── DefaultActivity.xaml │ │ ├── DefaultActivity.xaml.cs │ │ ├── DeleteActivity.xaml │ │ ├── DeleteActivity.xaml.cs │ │ ├── ForkActivity.xaml │ │ ├── ForkActivity.xaml.cs │ │ ├── GollumActivity.xaml │ │ ├── GollumActivity.xaml.cs │ │ ├── IssueActivity.xaml │ │ ├── IssueActivity.xaml.cs │ │ ├── IssueCommentActivity.xaml │ │ ├── IssueCommentActivity.xaml.cs │ │ ├── MemberActivity.xaml │ │ ├── MemberActivity.xaml.cs │ │ ├── PublicActivity.xaml │ │ ├── PublicActivity.xaml.cs │ │ ├── PullRequestActivity.xaml │ │ ├── PullRequestActivity.xaml.cs │ │ ├── PullRequestReviewCommentActivity.xaml │ │ ├── PullRequestReviewCommentActivity.xaml.cs │ │ ├── PushEventActivity.xaml │ │ ├── PushEventActivity.xaml.cs │ │ ├── ReleaseActivity.xaml │ │ ├── ReleaseActivity.xaml.cs │ │ ├── SponsorshipActivity.xaml │ │ ├── SponsorshipActivity.xaml.cs │ │ ├── WatchActivity.xaml │ │ └── WatchActivity.xaml.cs │ ├── ActivityList.xaml │ ├── ActivityList.xaml.cs │ ├── Code │ │ ├── CodeButton.xaml │ │ └── CodeButton.xaml.cs │ ├── Commit │ │ ├── CommitButton.xaml │ │ ├── CommitButton.xaml.cs │ │ ├── CommitDetail.xaml │ │ ├── CommitDetail.xaml.cs │ │ ├── CommitItem.xaml │ │ ├── CommitItem.xaml.cs │ │ ├── FileDiff.xaml │ │ └── FileDiff.xaml.cs │ ├── Common │ │ ├── Avatar.xaml │ │ ├── Avatar.xaml.cs │ │ ├── CommentBlock.xaml │ │ ├── CommentBlock.xaml.cs │ │ ├── CreditPersonaleButton.xaml │ │ ├── CreditPersonaleButton.xaml.cs │ │ ├── CreditPersonaleDialog.xaml │ │ ├── CreditPersonaleDialog.xaml.cs │ │ ├── DevConsole.xaml │ │ ├── DevConsole.xaml.cs │ │ ├── EmojiButton.xaml │ │ ├── EmojiButton.xaml.cs │ │ ├── EmojiPanelButton.xaml │ │ ├── EmojiPanelButton.xaml.cs │ │ ├── FeaturePurchaseDialog.xaml │ │ ├── FeaturePurchaseDialog.xaml.cs │ │ ├── GroupFilters.xaml │ │ ├── GroupFilters.xaml.cs │ │ ├── IssueSidePanel.xaml │ │ ├── IssueSidePanel.xaml.cs │ │ ├── MarkdownForm.xaml │ │ ├── MarkdownForm.xaml.cs │ │ ├── MarkdownViewer.xaml │ │ ├── MarkdownViewer.xaml.cs │ │ ├── ProLicensePurchaseSuccessDialog.xaml │ │ ├── ProLicensePurchaseSuccessDialog.xaml.cs │ │ ├── RepoLabel.xaml │ │ ├── RepoLabel.xaml.cs │ │ ├── SidePanelDropDown.xaml │ │ ├── SidePanelDropDown.xaml.cs │ │ ├── SidePanelItem.xaml │ │ ├── SidePanelItem.xaml.cs │ │ ├── SvgIcon.xaml │ │ ├── SvgIcon.xaml.cs │ │ ├── ThemeImage.xaml │ │ └── ThemeImage.xaml.cs │ ├── Issue │ │ ├── IssueButton.xaml │ │ ├── IssueButton.xaml.cs │ │ ├── IssueForm.xaml │ │ ├── IssueForm.xaml.cs │ │ ├── RepoIssueDetail.xaml │ │ ├── RepoIssueDetail.xaml.cs │ │ ├── UserIssueList.xaml │ │ └── UserIssueList.xaml.cs │ ├── Profile │ │ ├── ProfileButton.xaml │ │ └── ProfileButton.xaml.cs │ ├── PullRequest │ │ ├── Conversation │ │ │ ├── ReviewBlock.xaml │ │ │ ├── ReviewBlock.xaml.cs │ │ │ ├── ReviewCommentBlock.xaml │ │ │ └── ReviewCommentBlock.xaml.cs │ │ ├── DiffTextBlock.xaml │ │ ├── DiffTextBlock.xaml.cs │ │ ├── MergeForm.xaml │ │ ├── MergeForm.xaml.cs │ │ ├── PullRequestButton.xaml │ │ ├── PullRequestButton.xaml.cs │ │ ├── PullRequestEditForm.xaml │ │ ├── PullRequestEditForm.xaml.cs │ │ ├── PullRequestForm.xaml │ │ ├── PullRequestForm.xaml.cs │ │ ├── RepoPullRequestDetail.xaml │ │ └── RepoPullRequestDetail.xaml.cs │ ├── Repo │ │ ├── RepoDeleteConfirmationDialog.xaml │ │ ├── RepoDeleteConfirmationDialog.xaml.cs │ │ ├── RepoDeletionFailDialog.xaml │ │ ├── RepoDeletionFailDialog.xaml.cs │ │ ├── RepoForm.xaml │ │ └── RepoForm.xaml.cs │ ├── RepoSideBar.xaml │ ├── RepoSideBar.xaml.cs │ ├── UserCommentBlock.xaml │ └── UserCommentBlock.xaml.cs │ ├── DashboardPage.xaml │ ├── DashboardPage.xaml.cs │ ├── DataTemplates │ ├── Activity │ │ ├── CommitCommentEventTemplate.xaml │ │ ├── CreateEventTemplate.xaml │ │ ├── DefaultTemplate.xaml │ │ ├── DeleteEventTemplate.xaml │ │ ├── ForkEventTemplate.xaml │ │ ├── GollumEventTemplate.xaml │ │ ├── IssueCommentEventTemplate.xaml │ │ ├── IssuesEventTemplate.xaml │ │ ├── MemberEventTemplate.xaml │ │ ├── PublicEventTemplate.xaml │ │ ├── PullRequestEventTemplate.xaml │ │ ├── PullRequestReviewCommentEventTemplate.xaml │ │ ├── PushEventTemplate.xaml │ │ ├── ReleaseEventTemplate.xaml │ │ ├── SponsorshipEventTemplate.xaml │ │ └── WatchEventTemplate.xaml │ ├── ActivityListItem.xaml │ ├── Filter │ │ ├── DateFilter.xaml │ │ ├── DropdownFilter.xaml │ │ └── TextFilter.xaml │ ├── Issue │ │ └── Event │ │ │ ├── AddedToProjectEvent.xaml │ │ │ ├── AssignedEvent.xaml │ │ │ ├── BaseRefChangedEvent.xaml │ │ │ ├── ClosedEvent.xaml │ │ │ ├── CommentDeletedEvent.xaml │ │ │ ├── CommentedEvent.xaml │ │ │ ├── CommitCommentedEvent.xaml │ │ │ ├── CommittedEvent.xaml │ │ │ ├── ConnectedEvent.xaml │ │ │ ├── ConvertedNoteToIssueEvent.xaml │ │ │ ├── CrossreferencedEvent.xaml │ │ │ ├── DefaultIssueEvent.xaml │ │ │ ├── DemilestonedEvent.xaml │ │ │ ├── HeadRefDeletedEvent.xaml │ │ │ ├── HeadRefForcePushedEvent.xaml │ │ │ ├── HeadRefRestoredEvent.xaml │ │ │ ├── LabeledEvent.xaml │ │ │ ├── LineCommentedEvent.xaml │ │ │ ├── LockedEvent.xaml │ │ │ ├── MarkedAsDuplicateEvent.xaml │ │ │ ├── MentionedEvent.xaml │ │ │ ├── MergedEvent.xaml │ │ │ ├── MilestonedEvent.xaml │ │ │ ├── MovedColumnsInProjectEvent.xaml │ │ │ ├── PinnedEvent.xaml │ │ │ ├── ReadyForReviewEvent.xaml │ │ │ ├── ReferencedEvent.xaml │ │ │ ├── RemovedFromProjectEvent.xaml │ │ │ ├── RenamedEvent.xaml │ │ │ ├── ReopenedEvent.xaml │ │ │ ├── ReviewDismissedEvent.xaml │ │ │ ├── ReviewRequestRemovedEvent.xaml │ │ │ ├── ReviewRequestedEvent.xaml │ │ │ ├── ReviewedEvent.xaml │ │ │ ├── SubscribedEvent.xaml │ │ │ ├── TransferredEvent.xaml │ │ │ ├── UnassignedEvent.xaml │ │ │ ├── UnlabeledEvent.xaml │ │ │ ├── UnlockedEvent.xaml │ │ │ ├── UnmarkedAsDuplicateEvent.xaml │ │ │ ├── UnpinnedEvent.xaml │ │ │ └── UnsubscribedEvent.xaml │ ├── IssueLabel.xaml │ ├── IssueListItem.xaml │ ├── PullRequest │ │ ├── ConversationCommit.xaml │ │ ├── ConversationEvent.xaml │ │ ├── ConversationPlainComment.xaml │ │ └── ConversationReview.xaml │ ├── PullRequestListItem.xaml │ ├── RepoListItem.xaml │ ├── Repository │ │ ├── ForkRepo.xaml │ │ ├── PrivateRepo.xaml │ │ └── PublicRepo.xaml │ └── SelectableItem │ │ ├── SelectableUser.xaml │ │ └── Selectablelabel.xaml │ ├── LoginPage.xaml │ ├── LoginPage.xaml.cs │ ├── Pages │ ├── IssuePage │ │ ├── IssueDetailPage.xaml │ │ └── IssueDetailPage.xaml.cs │ ├── ProfilePage.xaml │ ├── ProfilePage.xaml.cs │ ├── PullRequestCommitsPage.xaml │ ├── PullRequestCommitsPage.xaml.cs │ ├── PullRequestConversationPage.xaml │ ├── PullRequestConversationPage.xaml.cs │ ├── RepoCodePage.xaml │ ├── RepoCodePage.xaml.cs │ ├── RepoCommitDetailPage.xaml │ ├── RepoCommitDetailPage.xaml.cs │ ├── RepoCommitsPage.xaml │ ├── RepoCommitsPage.xaml.cs │ ├── RepoDetailCodePage.xaml │ ├── RepoDetailCodePage.xaml.cs │ ├── RepoDetailPage.xaml │ ├── RepoDetailPage.xaml.cs │ ├── RepoIssuePage.xaml │ ├── RepoIssuePage.xaml.cs │ ├── RepoManagePage.xaml │ ├── RepoManagePage.xaml.cs │ ├── RepoPullRequestPage.xaml │ ├── RepoPullRequestPage.xaml.cs │ ├── RepoSearchResultPage.xaml │ ├── RepoSearchResultPage.xaml.cs │ ├── SettingsPage.xaml │ ├── SettingsPage.xaml.cs │ ├── ShellPage.xaml │ └── ShellPage.xaml.cs │ ├── RepoListPage.xaml │ └── RepoListPage.xaml.cs ├── LICENSE ├── Markdig.Client.Markdig ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ └── Wide310x150Logo.scale-200.png ├── MainPage.xaml ├── MainPage.xaml.cs ├── MainViewModel.cs ├── Markdig.Client.Markdig.csproj ├── Package.appxmanifest └── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml ├── Markdig.UWP ├── DefaultSVGRenderer.cs ├── Extensions.cs ├── HtmlWriter.cs ├── ISVGRenderer.cs ├── ImageProvider.cs ├── Markdig.UWP.csproj ├── MarkdownConfig.cs ├── MarkdownExtensions.cs ├── MarkdownUIBuilder.cs ├── MarkdownViewer.xaml ├── MarkdownViewer.xaml.cs ├── MarkdownViewerViewModel.cs ├── Properties │ ├── AssemblyInfo.cs │ └── Markdig.UWP.rd.xml ├── Renderers │ ├── ObjectRenderers │ │ ├── CodeBlockRenderer.cs │ │ ├── Extensions │ │ │ ├── TableRenderer.cs │ │ │ └── TaskListRenderer.cs │ │ ├── HeadingRenderer.cs │ │ ├── HtmlBlockRenderer.cs │ │ ├── Inlines │ │ │ ├── AutoLinkInlineRenderer.cs │ │ │ ├── CodeInlineRenderer.cs │ │ │ ├── ContainerInlineRenderer.cs │ │ │ ├── DelimiterInlineRenderer.cs │ │ │ ├── EmphasisInlineRenderer.cs │ │ │ ├── HtmlEntityInlineRenderer.cs │ │ │ ├── HtmlInlineRenderer.cs │ │ │ ├── LineBreakInlineRenderer.cs │ │ │ ├── LinkInlineRenderer.cs │ │ │ └── LiteralInlineRenderer.cs │ │ ├── ListRenderer.cs │ │ ├── ParagraphRenderer.cs │ │ ├── QuoteBlockRenderer.cs │ │ └── ThematicBreakRenderer.cs │ ├── UWPObjectRenderer.cs │ └── UWPRenderer.cs └── TextElements │ ├── Html │ ├── MyBlock.cs │ ├── MyDetails.cs │ └── MyInline.cs │ ├── HtmlElementType.cs │ ├── IAddChild.cs │ ├── MyAutolinkInline.cs │ ├── MyBlockContainer.cs │ ├── MyCodeBlock.cs │ ├── MyEmphasisInline.cs │ ├── MyFlowDocument.cs │ ├── MyHeading.cs │ ├── MyHyperlink.cs │ ├── MyHyperlinkButton.cs │ ├── MyImage.cs │ ├── MyInlineCode.cs │ ├── MyInlineText.cs │ ├── MyLineBreak.cs │ ├── MyList.cs │ ├── MyParagraph.cs │ ├── MyQuote.cs │ ├── MyTable.cs │ ├── MyTableCell.cs │ ├── MyTableRow.cs │ ├── MyTableUIElement.cs │ ├── MyTaskListCheckBox.cs │ └── MyThematicBreak.cs ├── README.md ├── ScreenShots ├── screenshot1.png ├── screenshot2.png └── screenshot3.png ├── System.Text.Json.Viewer ├── JsonViewer.xaml ├── JsonViewer.xaml.cs ├── JsonViewerConfig.cs ├── JsonViewerTheme.cs ├── Properties │ ├── AssemblyInfo.cs │ └── System.Text.Json.Viewer.rd.xml └── System.Text.Json.Viewer.csproj ├── Utilities.Common ├── BoolToVisibilityConverter.cs ├── BoolToVisibilityReverseConverter.cs ├── NumberToVisibilityConverter.cs ├── Properties │ ├── AssemblyInfo.cs │ └── Utilities.Common.rd.xml └── Utilities.Common.csproj └── download-vsocde.ps1 /JitHub.Auth/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Hosting; 2 | using ThrottlingTroll; 3 | 4 | bool isDebugMode = false; 5 | #if DEBUG 6 | isDebugMode = true; 7 | #endif 8 | 9 | var limit = isDebugMode ? 1000 : 10; 10 | 11 | var host = new HostBuilder() 12 | .ConfigureFunctionsWorkerDefaults((hostBuilderContext, workerAppBuilder) => { 13 | 14 | workerAppBuilder.UseThrottlingTroll(hostBuilderContext, options => 15 | { 16 | options.Config = new ThrottlingTrollConfig 17 | { 18 | Rules = new[] 19 | { 20 | new ThrottlingTrollRule 21 | { 22 | UriPattern = "/api", 23 | LimitMethod = new FixedWindowRateLimitMethod 24 | { 25 | PermitLimit = limit, 26 | IntervalInSeconds = 3600 27 | } 28 | }, 29 | // add more rules here... 30 | } 31 | }; 32 | }); 33 | }) 34 | .Build(); 35 | 36 | host.Run(); 37 | -------------------------------------------------------------------------------- /JitHub.Auth/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "JitHub.Auth": { 4 | "commandName": "Project", 5 | "commandLineArgs": "--port 7003", 6 | "launchBrowser": false 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /JitHub.Auth/Properties/serviceDependencies.JitHubAuth.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "storage1": { 4 | "resourceId": "/subscriptions/[parameters('subscriptionId')]/resourceGroups/[parameters('resourceGroupName')]/providers/Microsoft.Storage/storageAccounts/jithubauthfunctionstorag", 5 | "type": "storage.azure", 6 | "connectionId": "AzureWebJobsStorage" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /JitHub.Auth/Properties/serviceDependencies.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "appInsights1": { 4 | "type": "appInsights" 5 | }, 6 | "storage1": { 7 | "type": "storage", 8 | "connectionId": "AzureWebJobsStorage" 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /JitHub.Auth/Properties/serviceDependencies.local.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "appInsights1": { 4 | "type": "appInsights.sdk" 5 | }, 6 | "storage1": { 7 | "type": "storage.emulator", 8 | "connectionId": "AzureWebJobsStorage" 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /JitHub.Auth/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /JitHub.Controls.Editor/Editor.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /JitHub.Controls.Editor/EditorOptions.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Controls.Editor 2 | { 3 | public class EditorOptions 4 | { 5 | public string Owner { get; set; } 6 | public string Repo { get; set; } 7 | public string Token { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /JitHub.VSCode.Client/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/StoreLogo.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.VSCode.Client/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /JitHub.VSCode.Client/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /JitHub.Web/App.razor: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | Not found 8 | 9 |

Sorry, there's nothing at this address.

10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /JitHub.Web/Client/Program.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Web; 2 | using Microsoft.AspNetCore.Components.Web; 3 | using Microsoft.AspNetCore.Components.WebAssembly.Hosting; 4 | namespace JitHub.Web 5 | { 6 | public class Program 7 | { 8 | public static async Task Main(string[] args) 9 | { 10 | var builder = WebAssemblyHostBuilder.CreateDefault(args); 11 | builder.RootComponents.Add("#app"); 12 | builder.RootComponents.Add("head::after"); 13 | 14 | builder.Services.AddScoped(sp => 15 | new HttpClient { BaseAddress = new Uri(builder.Configuration["API_Prefix"] ?? builder.HostEnvironment.BaseAddress) }); 16 | await builder.Build().RunAsync(); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /JitHub.Web/JitHub.Web.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /JitHub.Web/Shared/MainLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 |
3 |
4 |
5 | 6 |
7 | 8 |
9 | @Body 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /JitHub.Web/Shared/NavMenu.razor: -------------------------------------------------------------------------------- 1 |  16 | 17 | @code { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /JitHub.Web/Shared/SurveyPrompt.razor: -------------------------------------------------------------------------------- 1 | 
2 | 3 | @Title 4 | 5 | 6 | Please take our 7 | brief survey 8 | 9 | and tell us what you think. 10 |
11 | 12 | @code { 13 | // Demonstrates how a parent component can supply parameters 14 | [Parameter] 15 | public string? Title { get; set; } 16 | } 17 | -------------------------------------------------------------------------------- /JitHub.Web/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using System.Net.Http 2 | @using System.Net.Http.Json 3 | @using Microsoft.AspNetCore.Components.Forms 4 | @using Microsoft.AspNetCore.Components.Routing 5 | @using Microsoft.AspNetCore.Components.Web 6 | @using Microsoft.AspNetCore.Components.Web.Virtualization 7 | @using Microsoft.AspNetCore.Components.WebAssembly.Http 8 | @using Microsoft.JSInterop 9 | @using JitHub.Web 10 | @using JitHub.Web.Shared 11 | -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/GitHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/GitHub.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/JitHubLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/JitHubLogo.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "API_Prefix": "http://localhost:7003" 3 | } 4 | -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/css/auth.css: -------------------------------------------------------------------------------- 1 | .auth-wrapper { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | justify-content: center; 6 | align-content: center; 7 | align-items: center; 8 | flex-direction: column; 9 | } 10 | 11 | .spinner-border { 12 | display: inline-block; 13 | width: 5rem; 14 | height: 5rem; 15 | vertical-align: text-bottom; 16 | border: 0.75em solid rgb(117, 49, 150); 17 | border-right-color: transparent; 18 | border-radius: 50%; 19 | animation: spinner-border .75s linear infinite; 20 | margin-bottom: 30px; 21 | } 22 | 23 | @keyframes spinner-border { 24 | to { 25 | transform: rotate(360deg); 26 | } 27 | } 28 | 29 | .auth-image{ 30 | height: 30%; 31 | width: 30%; 32 | margin-bottom: 35px; 33 | } 34 | 35 | .link { 36 | color: blue; 37 | text-decoration: underline; 38 | cursor: pointer; 39 | } -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/css/open-iconic/ICON-LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Waybury 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 13 | all 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 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/favicon.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/icon-192.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "routes": [ 3 | { 4 | "route": "/authorize", 5 | "serve": "/index.html", 6 | "statusCode": 200 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/ss1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/ss1.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/ss2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/ss2.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/ss3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/ss3.png -------------------------------------------------------------------------------- /JitHub.Web/wwwroot/winui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub.Web/wwwroot/winui.png -------------------------------------------------------------------------------- /JitHub.WebView/Natives/IApplicationWindow_HwndInterop.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace WebView2Ex.Natives; 5 | 6 | 7 | [ComImport, Guid("B74EA3BC-43C1-521F-9C75-E5C15054D78C"), InterfaceType(ComInterfaceType.InterfaceIsIInspectable)] 8 | interface IApplicationWindow_HwndInterop 9 | { 10 | Windows.UI.WindowId WindowHandle { get; } 11 | } -------------------------------------------------------------------------------- /JitHub.WebView/Natives/ICoreWindowInterop.cs: -------------------------------------------------------------------------------- 1 | // Native methods wrapper 2 | // Some code are from https://github.com/microsoft/microsoft-ui-xaml/blob/main/dev/WebView2/WebView2.cpp 3 | #nullable enable 4 | using System; 5 | using System.Runtime.InteropServices; 6 | 7 | namespace WebView2Ex.Natives; 8 | 9 | [ComImport, Guid("45D64A29-A63E-4CB6-B498-5781D298CB4F")] 10 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 11 | interface ICoreWindowInterop 12 | { 13 | IntPtr WindowHandle { get; } 14 | bool MessageHandled { set; } 15 | } -------------------------------------------------------------------------------- /JitHub.WebView/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("JitHub.WebView")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("JitHub.WebView")] 13 | [assembly: AssemblyCopyright("Copyright © 2023")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /JitHub.WebView/UI/WebView2Ex.Events.Etc.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | using Windows.UI.Xaml; 3 | 4 | namespace WebView2Ex.UI; 5 | 6 | partial class WebView2Ex 7 | { 8 | void HandleRendered(object sender, object args) 9 | { 10 | if (CoreWebView2 is not null) 11 | { 12 | // Check if the position of the WebView inside the app has changed 13 | CheckAndUpdateWebViewPosition(); 14 | // Check if the position of the window itself has changed 15 | CheckAndUpdateWindowPosition(); 16 | // Check if the visibility property of a parent element has changed 17 | CheckAndUpdateVisibility(); 18 | } 19 | } 20 | 21 | void HandleSizeChanged(object sender, SizeChangedEventArgs args) 22 | { 23 | SetCoreWebViewAndVisualSize((float)args.NewSize.Width, (float)args.NewSize.Height); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JitHub.WebView/UI/WebView2Ex.Override.cs: -------------------------------------------------------------------------------- 1 | // Original: https://github.com/microsoft/microsoft-ui-xaml/blob/main/dev/WebView2/WebView2.cpp 2 | #nullable enable 3 | using Windows.Foundation; 4 | using Windows.UI.Xaml; 5 | using Size = Windows.Foundation.Size; 6 | using Point = Windows.Foundation.Point; 7 | 8 | 9 | namespace WebView2Ex.UI; 10 | 11 | partial class WebView2Ex 12 | { 13 | protected override Size MeasureOverride(Size availableSize) 14 | { 15 | return base.MeasureOverride(availableSize); 16 | } 17 | 18 | // We could have a child Grid (see AddChildPanel) or a child TextBlock (see CreateMissingAnaheimWarning). 19 | // Make sure it is visited by the Arrange pass. 20 | protected override Size ArrangeOverride(Size finalSize) 21 | { 22 | if (Content is FrameworkElement child) 23 | { 24 | child.Arrange(new Rect(new Point(0, 0), finalSize)); 25 | return finalSize; 26 | } 27 | 28 | return base.ArrangeOverride(finalSize); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /JitHub.WebView/UI/WebView2Ex.PublicAPIs.cs: -------------------------------------------------------------------------------- 1 | // Original: https://github.com/microsoft/microsoft-ui-xaml/blob/main/dev/WebView2/WebView2.cpp 2 | using WebView2Ex.Natives; 3 | using Windows.UI.Core; 4 | using Windows.UI.WindowManagement; 5 | using Windows.Win32.Foundation; 6 | using static WebView2Ex.Natives.User32; 7 | namespace WebView2Ex.UI; 8 | 9 | partial class WebView2Ex 10 | { 11 | public partial void Dispose(); 12 | public partial void Close(); 13 | public void SetWindow(HWND window) 14 | { 15 | ParentWindow = window; 16 | UpdateWindow(); 17 | } 18 | public void SetWindow(AppWindow appWindow) 19 | { 20 | SetWindow((HWND)(nint)((IApplicationWindow_HwndInterop)(dynamic)appWindow).WindowHandle.Value); 21 | } 22 | public void SetWindow(CoreWindow coreWindow) 23 | { 24 | SetWindow(HWNDFromCoreWindow(coreWindow)); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /JitHub.WebView/Utility.cs: -------------------------------------------------------------------------------- 1 | // Some code are from https://github.com/microsoft/microsoft-ui-xaml/ 2 | #nullable enable 3 | using System; 4 | using Windows.System.Threading; 5 | using Windows.UI.Core; 6 | 7 | namespace WebView2Ex; 8 | 9 | static class Utility 10 | { 11 | public static void ScheduleActionAfterWait(CoreDispatcher Dispatcher, 12 | Action action, 13 | uint millisecondWait) 14 | { 15 | // The callback that is given to CreateTimer is called off of the UI thread. 16 | // In order to make this useful by making it so we can interact with XAML objects, 17 | // we'll use the dispatcher to first post our work to the UI thread before executing it. 18 | var timer = ThreadPoolTimer.CreateTimer(async _ 19 | => await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => action()), 20 | TimeSpan.FromMilliseconds(millisecondWait) 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Assets/ContributorsProfilePhotos/GetProfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/ContributorsProfilePhotos/GetProfile.png -------------------------------------------------------------------------------- /JitHub/Assets/ContributorsProfilePhotos/JakubProfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/ContributorsProfilePhotos/JakubProfile.png -------------------------------------------------------------------------------- /JitHub/Assets/ContributorsProfilePhotos/KeiraProfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/ContributorsProfilePhotos/KeiraProfile.png -------------------------------------------------------------------------------- /JitHub/Assets/ContributorsProfilePhotos/NeroProfile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/ContributorsProfilePhotos/NeroProfile.jpg -------------------------------------------------------------------------------- /JitHub/Assets/Data/in-app-purchase.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Data/in-app-purchase.xml -------------------------------------------------------------------------------- /JitHub/Assets/Fonts/FluentIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Fonts/FluentIcons.ttf -------------------------------------------------------------------------------- /JitHub/Assets/Icons/github_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Icons/github_logo_dark.png -------------------------------------------------------------------------------- /JitHub/Assets/Icons/github_logo_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Icons/github_logo_light.png -------------------------------------------------------------------------------- /JitHub/Assets/Icons/no_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Icons/no_result.png -------------------------------------------------------------------------------- /JitHub/Assets/Icons/select_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Icons/select_one.png -------------------------------------------------------------------------------- /JitHub/Assets/JitHubLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/JitHubLogo.png -------------------------------------------------------------------------------- /JitHub/Assets/JitHubLogoCropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/JitHubLogoCropped.png -------------------------------------------------------------------------------- /JitHub/Assets/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LargeTile.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LargeTile.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LargeTile.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LargeTile.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LargeTile.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/LinkLogos/GitHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LinkLogos/GitHub.png -------------------------------------------------------------------------------- /JitHub/Assets/LinkLogos/LinkedIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LinkLogos/LinkedIn.png -------------------------------------------------------------------------------- /JitHub/Assets/LinkLogos/Twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LinkLogos/Twitter.png -------------------------------------------------------------------------------- /JitHub/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/Octocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Octocat.png -------------------------------------------------------------------------------- /JitHub/Assets/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SmallTile.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SmallTile.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SmallTile.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SmallTile.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SmallTile.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /JitHub/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /JitHub/Assets/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/StoreLogo.backup.png -------------------------------------------------------------------------------- /JitHub/Assets/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /JitHub/Assets/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /JitHub/Assets/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /JitHub/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /JitHub/Assets/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /JitHub/Assets/comments_icon_dark.svg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /JitHub/Assets/comments_icon_light.svg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /JitHub/Assets/commit_icon_dark.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /JitHub/Assets/commit_icon_light.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /JitHub/Assets/files_icon_dark.svg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /JitHub/Assets/files_icon_light.svg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /JitHub/Assets/merge_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /JitHub/Assets/people_icon_dark.svg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /JitHub/Assets/people_icon_light.svg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /JitHub/Assets/pro_x_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/pro_x_dark.png -------------------------------------------------------------------------------- /JitHub/Assets/pro_x_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JitHubApp/JitHubV2/01d7d884407b4b92a51cf0a95c08e95ed2acde5d/JitHub/Assets/pro_x_light.png -------------------------------------------------------------------------------- /JitHub/Converters/Activities/CommitShaToShortConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace JitHub.Converters.Activities 5 | { 6 | class CommitShaToShortConverter : IValueConverter 7 | { 8 | public object Convert(object value, Type targetType, object parameter, string language) 9 | { 10 | var sha = value as string; 11 | return sha?.Substring(0, 7); 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, string language) 15 | { 16 | throw new NotImplementedException(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Converters/Activities/PushEventPayloadToCommitStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Windows.UI.Xaml.Data; 4 | 5 | namespace JitHub.Converters.Activities 6 | { 7 | class PushEventPayloadToCommitStringConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | { 11 | ICollection commits = (ICollection)value; 12 | return $"{commits.Count} commits to"; 13 | } 14 | 15 | public object ConvertBack(object value, Type targetType, object parameter, string language) 16 | { 17 | throw new NotImplementedException(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /JitHub/Converters/Activities/RefFullStringToBranchConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Activities 9 | { 10 | class RefFullStringToBranchConverter : IValueConverter 11 | { 12 | public static string ConvertFromRefToBranch(string reference) 13 | { 14 | if (!string.IsNullOrEmpty(reference) && reference.StartsWith("refs/heads/")) 15 | return reference.Substring(11); 16 | return reference; 17 | } 18 | public object Convert(object value, Type targetType, object parameter, string language) 19 | { 20 | var reference = value as string; 21 | return ConvertFromRefToBranch(reference); 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, string language) 25 | { 26 | throw new NotImplementedException(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /JitHub/Converters/BoolToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Data; 4 | 5 | namespace JitHub.Converters 6 | { 7 | class BoolToVisibilityConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | => (bool)value ? Visibility.Visible : Visibility.Collapsed; 11 | 12 | public object ConvertBack(object value, Type targetType, object parameter, string language) 13 | => (Visibility)value == Visibility.Visible; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /JitHub/Converters/BoolToVisibilityReverseConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml; 7 | using Windows.UI.Xaml.Data; 8 | 9 | namespace JitHub.Converters 10 | { 11 | class BoolToVisibilityReverseConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | => !(bool)value ? Visibility.Visible : Visibility.Collapsed; 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, string language) 17 | => (Visibility)value != Visibility.Visible; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Converters/Code/IsExpandToFolderFilledIconConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace JitHub.Converters.Code 5 | { 6 | public class IsExpandToFolderFilledIconConverter : IValueConverter 7 | { 8 | public object Convert(object value, Type targetType, object parameter, string language) 9 | { 10 | var expanded = (bool)value; 11 | return expanded ? "\ued44" : "\ued42";//closed: e8d5 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, string language) 15 | { 16 | throw new NotImplementedException(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Converters/Code/IsExpandToFolderOutlineIconConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Code 9 | { 10 | public class IsExpandToFolderOutlineIconConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | var expanded = (bool)value; 15 | return expanded ? "\ued43" : "\ued41"; 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/BoolToAccentColorConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.ViewManagement; 3 | using Windows.UI.Xaml.Data; 4 | using Windows.UI.Xaml.Media; 5 | 6 | namespace JitHub.Converters.Common 7 | { 8 | internal class BoolToAccentColorConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | var isTrue = (bool)value; 13 | var uiSettings = new UISettings(); 14 | var accentColor = uiSettings.GetColorValue(UIColorType.Accent); 15 | return isTrue ? new SolidColorBrush(accentColor) : null; 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/ColorToSolidBrushConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI; 7 | using Windows.UI.Xaml.Data; 8 | using Windows.UI.Xaml.Media; 9 | 10 | namespace JitHub.Converters.Common 11 | { 12 | class ColorToSolidBrushConverter : IValueConverter 13 | { 14 | public object Convert(object value, Type targetType, object parameter, string language) 15 | { 16 | var color = (Color)value; 17 | return new SolidColorBrush(color); 18 | } 19 | 20 | public object ConvertBack(object value, Type targetType, object parameter, string language) 21 | { 22 | throw new NotImplementedException(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/DiffToMarkdownConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace JitHub.Converters.Common 5 | { 6 | class DiffToMarkdownConverter : IValueConverter 7 | { 8 | public object Convert(object value, Type targetType, object parameter, string language) 9 | { 10 | var diff = value as string; 11 | return "```diff\n" + diff + "\n```"; 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, string language) 15 | { 16 | throw new NotImplementedException(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/ListToShorterListConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Common 9 | { 10 | class ListToShorterListConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | var arr = value as IEnumerable; 15 | var amount = int.Parse(parameter.ToString()); 16 | return arr.Take(amount); 17 | } 18 | 19 | public object ConvertBack(object value, Type targetType, object parameter, string language) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/MarkdownToMarkdownConfigConverter.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.DependencyInjection; 2 | using JitHub.Services; 3 | using System; 4 | using Windows.UI.Xaml.Data; 5 | 6 | namespace JitHub.Converters.Common 7 | { 8 | internal class MarkdownToMarkdownConfigConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | var githubService = Ioc.Default.GetService(); 13 | var markdown = value as string; 14 | var markdownConfig = githubService.GetMarkdownConfig(markdown); 15 | return markdownConfig; 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/NumberToKizedStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace JitHub.Converters.Common 5 | { 6 | public class NumberToKizedStringConverter : IValueConverter 7 | { 8 | public object Convert(object value, Type targetType, object parameter, string language) 9 | { 10 | var num = (int)value; 11 | return $"{(num >= 1000 ? num / 1000 : num)}{(num >= 1000 ? "k" : "")}"; 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, string language) 15 | { 16 | throw new NotImplementedException(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/ObjToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml; 7 | using Windows.UI.Xaml.Data; 8 | 9 | namespace JitHub.Converters.Common 10 | { 11 | internal class ObjToVisibilityConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | => value == null ? Visibility.Visible : Visibility.Collapsed; 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, string language) 17 | { 18 | throw new NotImplementedException(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/StringToImageSourceConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | using Windows.UI.Xaml.Media.Imaging; 8 | 9 | namespace JitHub.Converters.Common 10 | { 11 | class StringToImageSourceConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | try 16 | { 17 | string url = value as string; 18 | return new BitmapImage(new Uri(url)); 19 | } 20 | catch (Exception e) 21 | { 22 | return new BitmapImage(new Uri("ms-appx:///Assets/Octocat.png")); 23 | } 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, string language) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /JitHub/Converters/Common/UseGradientToForegroundConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI; 3 | using Windows.UI.Xaml.Data; 4 | using Windows.UI.Xaml.Media; 5 | 6 | namespace JitHub.Converters.Common 7 | { 8 | class UseGradientToForegroundConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | var useGradient = (bool)value; 13 | return useGradient ? new SolidColorBrush(Colors.Black) : new SolidColorBrush(Colors.White); 14 | } 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, string language) 17 | { 18 | throw new NotImplementedException(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/CommentDateBodyConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Issues 9 | { 10 | class CommentDateBodyConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | var dateCreated = (DateTimeOffset)value; 15 | return String.Format("commented on {0}", dateCreated.ToString("MMM dd, yyyy")); 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/IssueModelToIssueDetailViewModelConverter.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using JitHub.Models.Base; 3 | using JitHub.ViewModels.IssueViewModels; 4 | using Octokit; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using Windows.UI.Xaml.Data; 11 | 12 | namespace JitHub.Converters.Issues 13 | { 14 | class IssueModelToIssueDetailViewModelConverter : IValueConverter 15 | { 16 | public object Convert(object value, Type targetType, object parameter, string language) 17 | { 18 | var issue = value as RepoSelectableItemModel; 19 | return issue != null ? new RepoIssueDetailViewModel(issue) : null; 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | { 24 | throw new NotImplementedException(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/NumberOfCommentsToDescriptionDetailConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Issues 9 | { 10 | class NumberOfCommentsToDescriptionDetailConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | var comments = (int)value; 15 | return String.Format("· {0} comments", comments.ToString()); 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/NumberToHashTaggedStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Issues 9 | { 10 | class NumberToHashTaggedStringConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | try 15 | { 16 | var number = (int)value; 17 | return "#" + number.ToString(); 18 | } 19 | catch (Exception _) 20 | { 21 | var number = (System.Int64)value; 22 | return "#" + number.ToString(); 23 | } 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, string language) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/OpenDateToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters.Issues 9 | { 10 | class OpenDateToStringConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | var dateCreated = (DateTimeOffset)value; 15 | return String.Format("opened on {0}", dateCreated.ToString("MMM dd, yyyy")); 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/OpenDateToStringForDetailConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace JitHub.Converters.Issues 5 | { 6 | class OpenDateToStringForDetailConverter : IValueConverter 7 | { 8 | public object Convert(object value, Type targetType, object parameter, string language) 9 | { 10 | var dateCreated = (DateTimeOffset)value; 11 | var param = parameter as string; 12 | return String.Format("opened this {0} on {1}", param, dateCreated.ToString("MMM dd, yyyy")); 13 | } 14 | 15 | public object ConvertBack(object value, Type targetType, object parameter, string language) 16 | { 17 | throw new NotImplementedException(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/ReactionDictionaryToUserNameListConverter.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Helpers; 2 | using Octokit; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using Windows.UI.Xaml.Data; 9 | 10 | namespace JitHub.Converters.Issues 11 | { 12 | public class ReactionDictionaryToUserNameListConverter : IValueConverter 13 | { 14 | public object Convert(object value, Type targetType, object parameter, string language) 15 | { 16 | if (value == null) return null; 17 | var userReactions = (Dictionary>)value; 18 | var type = ((string)parameter).ToReactionType(); 19 | return userReactions.GetValueOrDefault(type); 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | { 24 | throw new NotImplementedException(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/ReactionVotesMapToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Helpers; 2 | using Octokit; 3 | using System; 4 | using System.Collections.Generic; 5 | using Windows.UI.Xaml.Data; 6 | 7 | namespace JitHub.Converters.Issues 8 | { 9 | public class ReactionVotesMapToBoolConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | if (value == null) return null; 14 | var votesMap = (Dictionary)value; 15 | var type = ((string)parameter).ToReactionType(); 16 | return votesMap.ContainsKey(type); 17 | } 18 | 19 | public object ConvertBack(object value, Type targetType, object parameter, string language) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/StringToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml; 7 | using Windows.UI.Xaml.Data; 8 | 9 | namespace JitHub.Converters.Issues 10 | { 11 | class StringToVisibilityConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | => string.IsNullOrEmpty((string)value) ? Visibility.Collapsed : Visibility.Visible; 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, string language) 17 | { 18 | throw new NotImplementedException(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /JitHub/Converters/Issues/UserToDiscriptionStringConverter.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Windows.UI.Xaml.Data; 8 | 9 | namespace JitHub.Converters.Issues 10 | { 11 | class UserToDiscriptionStringConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | var user = (User)value; 16 | return "by " + user.Login; 17 | } 18 | 19 | public object ConvertBack(object value, Type targetType, object parameter, string language) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Converters/LanguageToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | using Windows.UI.Xaml; 8 | 9 | namespace JitHub.Converters 10 | { 11 | class LanguageToVisibilityConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | var languageString = string.Empty; 16 | if (value != null) 17 | { 18 | languageString = (string)value; 19 | } 20 | return String.IsNullOrEmpty(languageString) ? Visibility.Collapsed : Visibility.Visible; 21 | } 22 | 23 | public object ConvertBack(object value, Type targetType, object parameter, string language) 24 | => throw new NotSupportedException(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /JitHub/Converters/PullRequests/PullRequestModelToPullRequestDetailViewModelConverter.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using JitHub.Models.Base; 3 | using JitHub.ViewModels.PullRequestViewModels; 4 | using Octokit; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using Windows.UI.Xaml.Data; 11 | 12 | namespace JitHub.Converters.PullRequests 13 | { 14 | class PullRequestModelToPullRequestDetailViewModelConverter : IValueConverter 15 | { 16 | public object Convert(object value, Type targetType, object parameter, string language) 17 | { 18 | var pullRequest = value as RepoSelectableItemModel; 19 | return pullRequest != null ? new RepoPullRequestDetailViewModel(pullRequest) : null; 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | { 24 | throw new NotImplementedException(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /JitHub/Converters/PullRequests/ReviewNodeToViewModelConverter.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models.PRConversation; 2 | using JitHub.ViewModels.PullRequestViewModels.ConversationViewModels; 3 | using System; 4 | using Windows.UI.Xaml.Data; 5 | 6 | namespace JitHub.Converters.PullRequests 7 | { 8 | public class ReviewNodeToViewModelConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | if (value == null || !(value is ReviewNode)) return new Exception("Failed to recognize ReviewNode object"); 13 | var reviewNode = (ReviewNode)value; 14 | return new ReviewNodeViewModel(reviewNode); 15 | } 16 | 17 | public object ConvertBack(object value, Type targetType, object parameter, string language) 18 | { 19 | throw new NotImplementedException(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /JitHub/Converters/RepoContentNodeToMarkDownConverter.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using Octokit; 3 | using System; 4 | using System.Linq; 5 | using Windows.UI.Xaml.Data; 6 | 7 | namespace JitHub.Converters 8 | { 9 | class RepoContentNodeToMarkDownConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | if (value == null) return string.Empty; 14 | var node = value as RepoContentNode; 15 | var splits = node.Name.Split("."); 16 | var format = splits.Last(); 17 | if (format.ToLower() == "md") return node.Content; 18 | var code = String.Format("```{0}\n{1}\n```", format, node.Content); 19 | return code; 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | => throw new NotSupportedException(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JitHub/Converters/RepoStatusIconConverter.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Windows.UI.Xaml.Data; 8 | 9 | namespace JitHub.Converters 10 | { 11 | class RepoStatusIconConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | var repo = value as Repository; 16 | if (repo.Fork) 17 | { 18 | return "ms-appx:///Assets/fork_repo_icon.svg"; 19 | } 20 | else if (repo.Private) 21 | { 22 | return "ms-appx:///Assets/private_repo_icon.svg"; 23 | } 24 | else 25 | { 26 | return "ms-appx:///Assets/public_repo_icon.svg"; 27 | } 28 | } 29 | 30 | public object ConvertBack(object value, Type targetType, object parameter, string language) 31 | { 32 | throw new NotImplementedException(); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /JitHub/Converters/StringToEnabledConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace JitHub.Converters 9 | { 10 | class StringToEnabledConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | var stringValue = string.Empty; 15 | if (value != null) 16 | { 17 | stringValue = (string)value; 18 | } 19 | return !String.IsNullOrWhiteSpace(stringValue); 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | => throw new NotSupportedException(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JitHub/Helpers/CodeViewTreeItemTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Controls; 4 | 5 | namespace JitHub.Helpers 6 | { 7 | public class CodeViewTreeItemTemplateSelector : DataTemplateSelector 8 | { 9 | public DataTemplate FolderTemplate { get; set; } 10 | public DataTemplate FileTemplate { get; set; } 11 | protected override DataTemplate SelectTemplateCore(object item) 12 | { 13 | switch (((RepoContentNode)item).IsDir) 14 | { 15 | case true: 16 | return FolderTemplate; 17 | case false: 18 | return FileTemplate; 19 | default: 20 | return FileTemplate; 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Helpers/FilterSelectionTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models.Filter; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Controls; 4 | 5 | namespace JitHub.Helpers 6 | { 7 | public class FilterSelectionTemplateSelector : DataTemplateSelector 8 | { 9 | public DataTemplate DropdownTemplate { get; set; } 10 | public DataTemplate DateTemplate { get; set; } 11 | public DataTemplate TextTemplate { get; set; } 12 | protected override DataTemplate SelectTemplateCore(object item) 13 | { 14 | switch (((FilterUnit)item).Type) 15 | { 16 | case nameof(DropdownFilter): 17 | return DropdownTemplate; 18 | case nameof(DateFilter): 19 | return DateTemplate; 20 | case nameof(TextFilter): 21 | return TextTemplate; 22 | default: 23 | return DropdownTemplate; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /JitHub/Helpers/IssueSideItemTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using JitHub.Models.Base; 3 | using Windows.UI.Xaml; 4 | using Windows.UI.Xaml.Controls; 5 | 6 | namespace JitHub.Helpers 7 | { 8 | public class IssueSideItemTemplateSelector : DataTemplateSelector 9 | { 10 | public DataTemplate UserTemplate { get; set; } 11 | public DataTemplate LabelTemplate { get; set; } 12 | protected override DataTemplate SelectTemplateCore(object item) 13 | { 14 | switch(((SelectableItem)item).Type) 15 | { 16 | case "User": 17 | return UserTemplate; 18 | case "Label": 19 | return LabelTemplate; 20 | default: 21 | return null; 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JitHub/Helpers/PlatformHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.ApplicationModel.DataTransfer; 7 | 8 | namespace JitHub.Helpers 9 | { 10 | public class PlatformHelper 11 | { 12 | public static void CopyString(string content) 13 | { 14 | var dataPackage = new DataPackage(); 15 | dataPackage.SetText(content); 16 | Clipboard.SetContent(dataPackage); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Models/Account.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace JitHub.Models 9 | { 10 | public class Account : ObservableObject 11 | { 12 | private int _id; 13 | private string _login; 14 | private string _avatarUrl; 15 | private bool _isLoggedIn; 16 | private bool _isActive; 17 | public int Id { get => _id; set => SetProperty(ref _id, value); } 18 | public string Login { get => _login; set => SetProperty(ref _login, value); } 19 | public string AvatarUrl { get => _avatarUrl; set => SetProperty(ref _avatarUrl, value); } 20 | public bool IsLoggedIn { get => _isLoggedIn; set => SetProperty(ref _isLoggedIn, value); } 21 | public bool IsActive { get => _isActive; set => SetProperty(ref _isActive, value); } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Models/Base/EmojiHost.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Models.Base 2 | { 3 | public enum EmojiHost 4 | { 5 | Issue, 6 | IssueComment, 7 | ReviewComment 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /JitHub/Models/Base/RepoSelectableItemModel.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Helpers; 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using Octokit; 4 | using Windows.UI; 5 | using Windows.UI.Xaml; 6 | using Windows.UI.Xaml.Media; 7 | 8 | namespace JitHub.Models.Base 9 | { 10 | public class RepoSelectableItemModel : ObservableObject 11 | { 12 | private T _model; 13 | private Repository _repo; 14 | private bool _selected = false; 15 | 16 | public T Model 17 | { 18 | get => _model; 19 | set => SetProperty(ref _model, value); 20 | } 21 | public Repository Repository 22 | { 23 | get => _repo; 24 | set => SetProperty(ref _repo, value); 25 | } 26 | public bool Selected 27 | { 28 | get => _selected; 29 | set 30 | { 31 | SetProperty(ref _selected, value); 32 | } 33 | } 34 | 35 | public RepoSelectableItemModel Item => this; 36 | 37 | public RepoSelectableItemModel() 38 | { 39 | Selected = false; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /JitHub/Models/Base/RepoType.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Models.Base; 2 | 3 | public enum RepoType 4 | { 5 | Public, 6 | Private, 7 | Forked 8 | } 9 | -------------------------------------------------------------------------------- /JitHub/Models/Base/SelectableItem.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Input; 8 | 9 | namespace JitHub.Models.Base 10 | { 11 | public class SelectableItem : ObservableObject 12 | { 13 | private bool _selected; 14 | private bool _selectable = true; 15 | public bool Selected 16 | { 17 | get => _selected; 18 | set => SetProperty(ref _selected, value); 19 | } 20 | public bool Selectable 21 | { 22 | get => _selectable; 23 | set => SetProperty(ref _selectable, value); 24 | } 25 | public ICommand SelectionCommand { get; set; } 26 | public SelectableItem Item => this; 27 | public string Type { get; set; } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /JitHub/Models/CodeBranchRef.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models 4 | { 5 | public class CodeBranchRef 6 | { 7 | private string _name; 8 | private string _ref; 9 | public string Name => _name; 10 | public string Ref => _ref; 11 | 12 | public CodeBranchRef(Branch branch) 13 | { 14 | _name = branch.Name; 15 | _ref = branch.Name; 16 | } 17 | 18 | public CodeBranchRef(string @ref) 19 | { 20 | _name = @ref; 21 | _ref = @ref; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Models/CommandArgs/IssueFormArgs.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace JitHub.Models.CommandArgs 9 | { 10 | public class IssueFormArgs 11 | { 12 | public long RepoId { get; set; } 13 | public Issue Issue { get; set; } 14 | public string Title { get; set; } 15 | public string Body { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /JitHub/Models/Credential.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Models 2 | { 3 | public class Credential 4 | { 5 | public string ClientId { get; set; } 6 | public string ClientSecret { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /JitHub/Models/EventfulCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | 6 | namespace JitHub.Models 7 | { 8 | public class EventfulCollection 9 | { 10 | public Action Action; 11 | public ICollection Instance { get; set; } 12 | 13 | public EventfulCollection() 14 | { 15 | Instance = new ObservableCollection(); 16 | } 17 | 18 | public void Add(T item) 19 | { 20 | Instance.Add(item); 21 | if (Action != null) 22 | Action.Invoke(item); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JitHub/Models/FailedRepo.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Models 2 | { 3 | public class FailedRepo 4 | { 5 | public RepoModel Repo { get; set; } 6 | public string Reason { get; set; } 7 | public FailedRepo(RepoModel repo, string reason) 8 | { 9 | Repo = repo; 10 | Reason = reason; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /JitHub/Models/FeaturePurchaseState.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Models 2 | { 3 | public enum FeaturePurchaseState 4 | { 5 | Success, 6 | Cancel, 7 | Failure, 8 | AlreadyOwn, 9 | } 10 | } -------------------------------------------------------------------------------- /JitHub/Models/Filter/FilterUnit.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace JitHub.Models.Filter 9 | { 10 | public abstract class FilterUnit : ObservableObject 11 | { 12 | private string _name; 13 | public string Name 14 | { 15 | get => _name; 16 | set => SetProperty(ref _name, value); 17 | } 18 | public string Title 19 | { 20 | get => $"Filter by {Name}"; 21 | } 22 | public abstract bool DefaultSelected { get; } 23 | public string Type { get; set; } 24 | 25 | public abstract void SetDefault(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /JitHub/Models/Filter/Selection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Models.Filter 8 | { 9 | public class Selection 10 | { 11 | public string DisplayMember { get; set; } 12 | public string SelectedValue { get; set; } 13 | public object Value { get; set; } 14 | public bool NotSelected { get; } 15 | 16 | public Selection(string displayMember, string selectedValue, object value, bool notSelected = false) 17 | { 18 | DisplayMember = displayMember; 19 | SelectedValue = selectedValue; 20 | Value = value; 21 | NotSelected = notSelected; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Models/Filter/TextFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Models.Filter 8 | { 9 | public class TextFilter : FilterUnit 10 | { 11 | private string _text; 12 | private string _defaultValue; 13 | public string Text 14 | { 15 | get => _text; 16 | set => SetProperty(ref _text, value); 17 | } 18 | 19 | public override bool DefaultSelected => Text == _defaultValue; 20 | 21 | public TextFilter(string name) : this(name, "") { } 22 | 23 | public TextFilter(string name, string defaultValue) 24 | { 25 | Name = name; 26 | _defaultValue = defaultValue; 27 | Type = nameof(TextFilter); 28 | } 29 | 30 | public override void SetDefault() 31 | { 32 | Text = _defaultValue; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /JitHub/Models/FullPullRequestCommit.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace JitHub.Models 9 | { 10 | public class FullPullRequestCommit : PullRequestCommit 11 | { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /JitHub/Models/IssueSidePanelItem.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models.Base; 2 | using System.Collections.Generic; 3 | using Windows.UI.Xaml; 4 | 5 | namespace JitHub.Models 6 | { 7 | public class IssueSidePanelItem 8 | { 9 | public string Header { get; } 10 | public ICollection Items { get; } 11 | public bool Show { get; } 12 | 13 | public IssueSidePanelItem(string header, ICollection items) 14 | { 15 | Header = header; 16 | Items = items; 17 | Show = Items.Count != 0; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /JitHub/Models/JitHubCommand.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Models 2 | { 3 | public enum JitHubCommand 4 | { 5 | CreateNewIssue, 6 | UpdateIssue, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /JitHub/Models/MenuItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | namespace JitHub.Models 4 | { 5 | public class MenuItem 6 | { 7 | public string Text { get; set; } 8 | public ICommand Command { get; set; } 9 | public object Parameter { get; set; } 10 | 11 | public MenuItem(string text, ICommand command, object param = null) 12 | { 13 | Text = text; 14 | Command = command; 15 | Parameter = param; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /JitHub/Models/NavArgs/CommitPageNavArg.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models.NavArgs 4 | { 5 | public class CommitPageNavArg : PageNavArg 6 | { 7 | private string _branch; 8 | private string _gitRef; 9 | public string Branch => _branch; 10 | public string GitRef => _gitRef; 11 | public bool NoBranch => string.IsNullOrWhiteSpace(_branch); 12 | public bool NoRef => string.IsNullOrWhiteSpace(_gitRef); 13 | 14 | public CommitPageNavArg(Repository repo) : base(repo) 15 | { 16 | } 17 | 18 | public static CommitPageNavArg CreateWithBranch(Repository repo, string branch) 19 | { 20 | return new CommitPageNavArg(repo) { _branch = branch }; 21 | } 22 | 23 | public static CommitPageNavArg Create(Repository repo, string branch, string _ref) 24 | { 25 | return new CommitPageNavArg(repo) { _gitRef = _ref, _branch = branch }; 26 | } 27 | 28 | public static CommitPageNavArg CreateWithGitRef(Repository repo, string _ref) 29 | { 30 | return new CommitPageNavArg(repo) { _gitRef = _ref }; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /JitHub/Models/NavArgs/IssueNavArg.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models.NavArgs 4 | { 5 | public class IssueNavArg : PageNavArg 6 | { 7 | private int _issueId; 8 | public int IssueId => _issueId; 9 | public bool NoDetail => _issueId <= 0; 10 | 11 | public IssueNavArg(Repository repo, int issueId) : base(repo) 12 | { 13 | _issueId = issueId; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /JitHub/Models/NavArgs/ModalArg.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml; 7 | 8 | namespace JitHub.Models.NavArgs 9 | { 10 | public class ModalArg 11 | { 12 | public string Title { get; set; } 13 | public bool UseHeader { get; set; } 14 | public FrameworkElement Content { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /JitHub/Models/NavArgs/PageNavArg.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models.NavArgs 4 | { 5 | public class PageNavArg 6 | { 7 | private Repository _repo; 8 | public Repository Repo => _repo; 9 | 10 | public PageNavArg(Repository repo) 11 | { 12 | _repo = repo; 13 | } 14 | 15 | public PageNavArg WithRepo(Repository repo) 16 | { 17 | _repo = repo; 18 | return this; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /JitHub/Models/NavArgs/PullRequestConvPageNavArg.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System.Windows.Input; 3 | 4 | namespace JitHub.Models.NavArgs 5 | { 6 | public class PullRequestConvPageNavArg 7 | { 8 | public Repository Repository { get; set; } 9 | public PullRequest PullRequest { get; set; } 10 | public ICommand RefreshCommand { get; set; } 11 | 12 | public PullRequestConvPageNavArg(Repository repo, PullRequest pr, ICommand command) 13 | { 14 | Repository = repo; 15 | PullRequest = pr; 16 | RefreshCommand = command; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /JitHub/Models/NavArgs/PullRequestPageNavArg.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models.NavArgs 4 | { 5 | public class PullRequestPageNavArg : PageNavArg 6 | { 7 | private int _pullRequestId; 8 | public int PullRequestId => _pullRequestId; 9 | public bool NoDetail => _pullRequestId <= 0; 10 | 11 | public PullRequestPageNavArg(Repository repo, int pullRequestId) : base(repo) 12 | { 13 | _pullRequestId = pullRequestId; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /JitHub/Models/PRConversation/CommitNode.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models.PRConversation 4 | { 5 | public class CommitNode : ConversationNode 6 | { 7 | public string NodeId { get; set; } 8 | public User Author { get; set; } 9 | public User Committer { get; set; } 10 | public Commit Commit { get; set; } 11 | public string Sha { get; set; } 12 | 13 | public CommitNode(PullRequestCommit commit, Repository repo, int number) : base(repo, number) 14 | { 15 | NodeId = commit.NodeId; 16 | Author = commit.Author; 17 | Committer = commit.Committer; 18 | Commit = commit.Commit; 19 | Sha = commit.Sha; 20 | CreatedAt = Commit.Author.Date; 21 | Object = commit; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Models/PRConversation/ConversationNode.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System; 3 | 4 | namespace JitHub.Models.PRConversation 5 | { 6 | public class ConversationNode 7 | { 8 | public Repository Repo { get; set; } 9 | // issue number or pr number 10 | // necessary field 11 | public int Number { get; set; } 12 | public DateTimeOffset CreatedAt { get; set; } 13 | public DateTimeOffset? UpdatedAt { get; set; } 14 | public object Object { get; set; } 15 | public ConversationNode Item => this; 16 | 17 | public ConversationNode(Repository repo, int number) 18 | { 19 | Repo = repo; 20 | Number = number; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JitHub/Models/PRConversation/EventNode.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | 3 | namespace JitHub.Models.PRConversation 4 | { 5 | public class EventNode : ConversationNode 6 | { 7 | public long Id { get; set; } 8 | public string NodeId { get; set; } 9 | public string Url { get; set; } 10 | public User Actor { get; set; } 11 | public User Assignee { get; set; } 12 | public EventInfoState State { get; set; } 13 | public Label Label { get; set; } 14 | public string CommitId { get; set; } 15 | public RenameInfo RenameInfo { get; set; } 16 | 17 | public EventNode(IssueEvent @event, Repository repo, int number) : base(repo, number) 18 | { 19 | CreatedAt = @event.CreatedAt; 20 | Id = @event.Id; 21 | NodeId = @event.NodeId; 22 | Url = @event.Url; 23 | Actor = @event.Actor; 24 | Assignee = @event.Assignee; 25 | State = @event.Event.Value; 26 | Label = @event.Label; 27 | CommitId = @event.CommitId; 28 | RenameInfo = @event.Rename; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /JitHub/Models/SelectableLabel.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models.Base; 2 | using Octokit; 3 | using System.Windows.Input; 4 | 5 | namespace JitHub.Models 6 | { 7 | public class SelectableLabel : SelectableItem 8 | { 9 | private Label _label; 10 | 11 | public Label Label 12 | { 13 | get => _label; 14 | set => SetProperty(ref _label, value); 15 | } 16 | 17 | public SelectableLabel(Label label, ICommand command) 18 | { 19 | Label = label; 20 | if (command != null) 21 | { 22 | SelectionCommand = command; 23 | } 24 | else 25 | { 26 | Selectable = false; 27 | } 28 | Type = "Label"; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /JitHub/Models/SelectableRepoModel.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models.Base; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Input; 8 | 9 | namespace JitHub.Models 10 | { 11 | public class SelectableRepoModel : SelectableItem 12 | { 13 | private RepoModel _repo; 14 | public RepoModel Repo 15 | { 16 | get => _repo; 17 | set => SetProperty(ref _repo, value); 18 | } 19 | 20 | public SelectableRepoModel(RepoModel repo) 21 | { 22 | Repo = repo; 23 | Type = "Repo"; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /JitHub/Models/SimpleFormData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Models 8 | { 9 | public class SimpleFormData 10 | { 11 | public string Title { get; set; } 12 | public string Body { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /JitHub/Models/ThemeConst.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Models 8 | { 9 | public class ThemeConst 10 | { 11 | public static string Dark = "Dark"; 12 | public static string Light = "Light"; 13 | public static string System = "System"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /JitHub/Models/UISize.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Models 8 | { 9 | public enum UISize 10 | { 11 | SMALL, 12 | MEDIUM, 13 | BIG 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /JitHub/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("JitHub")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("JitHub")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /JitHub/Routers/RouterBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Routers 8 | { 9 | public abstract class RouterBase 10 | { 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /JitHub/Services/AccountService.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Services 2 | { 3 | public class AccountService : IAccountService 4 | { 5 | private ISettingService _settings; 6 | private static string userIdKey = "USER_ID"; 7 | public static string doNotWarnDeleteRepoKey = "DO_NOT_WARN_DELETE_REPO"; 8 | public AccountService(ISettingService settings) 9 | { 10 | _settings = settings; 11 | } 12 | 13 | public void RemoveUser() 14 | { 15 | _settings.Save(userIdKey, string.Empty); 16 | } 17 | 18 | public void SaveUser(int userId) 19 | { 20 | _settings.Save(userIdKey, userId); 21 | _settings.Save(doNotWarnDeleteRepoKey, false); 22 | } 23 | 24 | public int GetUser() 25 | { 26 | return _settings.Get(userIdKey); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /JitHub/Services/AppConfig.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using Microsoft.Extensions.Configuration; 3 | using Windows.ApplicationModel; 4 | 5 | namespace JitHub.Services 6 | { 7 | public class AppConfig : IAppConfig 8 | { 9 | private readonly IConfigurationRoot _configurationRoot; 10 | private T GetSection(string key) => _configurationRoot.GetSection(key).Get(); 11 | 12 | public Credential Credential => GetSection(nameof(Credential)); 13 | 14 | public AppConfig() 15 | { 16 | var builder = new ConfigurationBuilder() 17 | .SetBasePath(Package.Current.InstalledLocation.Path) 18 | .AddJsonFile("appsettings.json", optional: false); 19 | 20 | _configurationRoot = builder.Build(); 21 | } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /JitHub/Services/IAccountService.cs: -------------------------------------------------------------------------------- 1 | namespace JitHub.Services 2 | { 3 | public interface IAccountService 4 | { 5 | void RemoveUser(); 6 | void SaveUser(int userId); 7 | int GetUser(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /JitHub/Services/IAppConfig.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | 3 | namespace JitHub.Services 4 | { 5 | public interface IAppConfig 6 | { 7 | Credential Credential { get; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /JitHub/Services/IAuthService.cs: -------------------------------------------------------------------------------- 1 | using Octokit; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace JitHub.Services 9 | { 10 | public interface IAuthService 11 | { 12 | bool Authenticated { get; set; } 13 | User AuthenticatedUser { get; set; } 14 | Task Authenticate(); 15 | Task Authorize(string response); 16 | string GetToken(int userId); 17 | bool CheckAuth(int userId); 18 | void SignOut(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /JitHub/Services/ICommandService.cs: -------------------------------------------------------------------------------- 1 | using JitHub.Models; 2 | using System.Windows.Input; 3 | 4 | namespace JitHub.Services 5 | { 6 | public interface ICommandService 7 | { 8 | ICommand GetCommand(JitHubCommand commandName); 9 | void RegisterCommand(JitHubCommand commandName, ICommand command); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /JitHub/Services/INotificationService.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | namespace JitHub.Services 4 | { 5 | public interface INotificationService 6 | { 7 | void Push(string message); 8 | void Register(ICommand pushCommand); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /JitHub/Services/ISettingService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JitHub.Services 8 | { 9 | public interface ISettingService 10 | { 11 | void Save(string key, T value); 12 | T Get(string key); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /JitHub/Services/IThemeService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml; 7 | 8 | namespace JitHub.Services 9 | { 10 | public interface IThemeService 11 | { 12 | void SetTheme(string theme); 13 | ApplicationTheme GetSystemTheme(); 14 | ApplicationTheme GetApplicationTheme(); 15 | string GetTheme(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /JitHub/Services/NotificationService.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | namespace JitHub.Services 4 | { 5 | public class NotificationService : INotificationService 6 | { 7 | private ICommand _pushCommand; 8 | 9 | public void Push(string message) 10 | { 11 | if (_pushCommand != null && _pushCommand.CanExecute(message)) 12 | { 13 | _pushCommand.Execute(message); 14 | } 15 | } 16 | 17 | public void Register(ICommand pushCommand) 18 | { 19 | _pushCommand = pushCommand; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /JitHub/Services/SettingService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.Helpers; 2 | 3 | namespace JitHub.Services 4 | { 5 | public class SettingService : ISettingService 6 | { 7 | private ApplicationDataStorageHelper _store; 8 | public SettingService() 9 | { 10 | _store = ApplicationDataStorageHelper.GetCurrent(new Microsoft.Toolkit.Helpers.SystemSerializer()); 11 | } 12 | public T Get(string key) 13 | { 14 | return _store.Read(key); 15 | } 16 | 17 | public void Save(string key, T value) 18 | { 19 | _store.Save(key, value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /JitHub/Styles/Color.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /JitHub/Styles/CustomListItem.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | -------------------------------------------------------------------------------- /JitHub/Styles/TextBlock.xaml: -------------------------------------------------------------------------------- 1 |  5 | 10 |