Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 17 additions & 9 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,27 @@
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="System.Text.Json" Version="10.0.3" />
<PackageVersion Include="System.Text.Json" Version="10.0.5" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
<PackageVersion Include="System.Formats.Cbor" Version="10.0.3" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="System.Formats.Cbor" Version="10.0.5" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2"/>
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5"/>
<PackageVersion Include="coverlet.collector" Version="8.0.0"/>
<PackageVersion Include="GitVersion.MSBuild" Version="6.6.0" />
<PackageVersion Include="GitVersion.MSBuild" Version="6.6.1" />
<PackageVersion Include="ZstdSharp.Port" Version="0.8.7" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="10.0.3" />
<PackageVersion Include="Microsoft.Build.Framework" Version="18.3.3" />
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="18.3.3" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="10.0.5" />
<PackageVersion Include="Microsoft.Build.Framework" Version="18.4.0" />
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="18.4.0" />
<PackageVersion Include="ConsoleAppFramework" Version="5.7.13"/>
<PackageVersion Include="Microsoft.Maui.Controls" Version="10.0.50" />
<PackageVersion Include="Avalonia" Version="12.0.0-preview2" />
<PackageVersion Include="Avalonia.Desktop" Version="12.0.0-preview2" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="12.0.0-preview2" />
<PackageVersion Include="Avalonia.Browser" Version="12.0.0-preview2" />
<PackageVersion Include="Avalonia.Controls.WebView" Version="12.0.999-cibuild0000026-alpha" />
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions NuGet.Config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<packageSources>
<clear />
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="avalonia-nightly" value="https://nuget-feed-nightly.avaloniaui.net/v3/index.json"
protocolVersion="3" />
</packageSources>

<fallbackPackageFolders>
Expand All @@ -13,6 +15,10 @@
<packageSourceMapping>
<packageSource key="api.nuget.org">
<package pattern="*" />
<package pattern="Avalonia*" />
</packageSource>
<packageSource key="avalonia-nightly">
<package pattern="Avalonia*" />
</packageSource>
</packageSourceMapping>
</configuration>
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<SupportedOSPlatformVersion>18.0</SupportedOSPlatformVersion>
<ValidateXcodeVersion>false</ValidateXcodeVersion>
<UseInterpreter>true</UseInterpreter>
<NoWarn>$(NoWarn);CS8002</NoWarn>

<!--
Enable full trimming in Release mode.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk.WebAssembly">
<PropertyGroup>
<TargetFramework>net10.0-browser</TargetFramework>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\BSkyOAuthAvalonia\BSkyOAuthAvalonia.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Update="Avalonia" />
<PackageReference Include="Avalonia.Browser" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Browser;
using BSkyOAuthAvalonia;

internal sealed partial class Program
{
private static Task Main(string[] args) => BuildAvaloniaApp()
.StartBrowserAppAsync("out");

public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
.avalonia-splash {
position: absolute;
height: 100%;
width: 100%;
background: white;
font-family: 'Outfit', sans-serif;
justify-content: center;
align-items: center;
display: flex;
pointer-events: none;
}

@media (prefers-color-scheme: light) {
.avalonia-splash {
background: white;
}

.avalonia-splash h2 {
color: #1b2a4e;
}
}

@media (prefers-color-scheme: dark) {
.avalonia-splash {
background: #1b2a4e;
}

.avalonia-splash h2 {
color: white;
}
}

.avalonia-splash h2 {
font-weight: 400;
font-size: 1.5rem;
}

.avalonia-splash.splash-close {
transition: opacity 200ms, display 200ms;
display: none;
opacity: 0;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>

<head>
<title>BSkyOAuthAvalonia</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./app.css" />
</head>

<body style="margin: 0; overflow: hidden">
<div id="out">
<div class="avalonia-splash">
<h2>Loading...</h2>
</div>
</div>
<script type='module' src="./main.js"></script>
</body>

</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { dotnet } from './_framework/dotnet.js'

const is_browser = typeof window != "undefined";
if (!is_browser) throw new Error(`Expected to be running in a browser`);

const dotnetRuntime = await dotnet
.withDiagnosticTracing(false)
.withApplicationArgumentsFromQuery()
.create();

const config = dotnetRuntime.getConfig();

await dotnetRuntime.runMain(config.mainAssemblyName, [globalThis.location.href]);
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Avalonia.Desktop" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BSkyOAuthAvalonia\BSkyOAuthAvalonia.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using Avalonia;
using BSkyOAuthAvalonia;

namespace BSkyOAuthAvalonia.Desktop;

internal class Program
{
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);

public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="BSkyOAuthAvalonia.App">
<Application.Styles>
<FluentTheme />
</Application.Styles>
</Application>
28 changes: 28 additions & 0 deletions samples/BSkyOAuth/BSkyOAuthAvalonia/BSkyOAuthAvalonia/App.axaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;

namespace BSkyOAuthAvalonia;

public class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}

public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow();
}
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView)
{
singleView.MainView = new MainView();
}

base.OnFrameworkInitializationCompleted();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<DefineConstants>$(DefineConstants);AVALONIA</DefineConstants>
<NoWarn>$(NoWarn);CS8002;CS8632</NoWarn>
<CarpaNet_LexiconAutoResolve>true</CarpaNet_LexiconAutoResolve>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Avalonia" />
<PackageReference Include="Avalonia.Themes.Fluent" />
<PackageReference Include="Avalonia.Controls.WebView" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../../../../src/CarpaNet/CarpaNet.csproj" />
<ProjectReference Include="../../../../src/CarpaNet.OAuth/CarpaNet.OAuth.csproj" />
<ProjectReference Include="../../../../src/CarpaNet.SourceGen/CarpaNet.SourceGen.csproj"
OutputItemType="Analyzer"
ReferenceOutputAssembly="false" />
</ItemGroup>

<Import Project="../../../../src/CarpaNet/build/CarpaNet.targets" />

<ItemGroup>
<LexiconResolve Include="app.bsky.feed.getTimeline" />
<LexiconResolve Include="app.bsky.actor.getProfile" />
<LexiconResolve Include="app.bsky.feed.post" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BSkyOAuthAvalonia"
x:Class="BSkyOAuthAvalonia.MainView">
<Grid RowDefinitions="Auto,*" Margin="15">
<StackPanel Grid.Row="0" Spacing="10">
<TextBox x:Name="HandleEntry"
PlaceholderText="Enter your Bluesky handle (e.g. alice.bsky.social)" />

<StackPanel Orientation="Horizontal" Spacing="10">
<Button x:Name="LoginBtn"
Content="Login"
Click="OnLoginClicked" />
<Button x:Name="LoadSessionBtn"
Content="Load Session"
Click="OnLoadSessionClicked" />
<Button x:Name="GetTimelineBtn"
Content="Get Timeline"
IsEnabled="False"
Click="OnGetTimelineClicked" />
</StackPanel>

<ProgressBar x:Name="LoadingIndicator"
IsIndeterminate="True"
IsVisible="False"
Height="4" />

<TextBlock x:Name="StatusLabel"
Text="Not authenticated"
Foreground="Gray"
TextWrapping="Wrap" />
</StackPanel>

<ListBox x:Name="TimelineView" Grid.Row="1" Margin="0,10,0,0">
<ListBox.ItemTemplate>
<DataTemplate x:DataType="local:TimelineItem">
<Border BorderBrush="Gray"
BorderThickness="1"
CornerRadius="8"
Padding="10"
Margin="0,4">
<StackPanel Spacing="4">
<TextBlock Text="{Binding AuthorDisplay}"
FontWeight="Bold" />
<TextBlock Text="{Binding Text}"
TextWrapping="Wrap"
MaxLines="5" />
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</UserControl>
Loading
Loading