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
Original file line number Diff line number Diff line change
Expand Up @@ -154,20 +154,24 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)

public static async Task<string?> GetMetadataFileContents(ToolkitSampleMetadata metadata, string fileExtension)
{
var filePath = GetPathToFileWithoutExtension(metadata.SampleControlType);
var filePath = GetRelativePathToFileWithoutExtension(metadata.SampleControlType);

try
{
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri($"{filePath}.{fileExtension.Trim('.')}"));
var textContents = await FileIO.ReadTextAsync(file);
// Workaround for https://github.com/unoplatform/uno/issues/8649
if (fileExtension.Contains(".cs"))
{
fileExtension = fileExtension.Replace(".cs", ".cs.dat");
}

// Remove toolkit attributes
textContents = Regex.Replace(textContents, @$"\s+?\[{nameof(ToolkitSampleAttribute).Replace("Attribute", "")}.+\]", "");
textContents = Regex.Replace(textContents, @$"\s+?\[{nameof(ToolkitSampleOptionsPaneAttribute).Replace("Attribute", "")}.+\]", "");
var finalPath = $"ms-appx:///{filePath}.{fileExtension.Trim('.')}";

var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx:///{filePath}.{fileExtension.Trim('.')}"));
var textContents = await FileIO.ReadTextAsync(file);

return textContents;
}
catch (Exception)
catch
{
return null;
}
Expand All @@ -177,7 +181,7 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
/// Compute path to a code file bundled in the app using type information.
/// Assumes file path in project matches namespace.
/// </summary>
public static string GetPathToFileWithoutExtension(Type type)
private static string GetRelativePathToFileWithoutExtension(Type type)
{
var simpleAssemblyName = type.Assembly.GetName().Name;
var typeNamespace = type.Namespace;
Expand All @@ -188,9 +192,11 @@ public static string GetPathToFileWithoutExtension(Type type)
if (string.IsNullOrWhiteSpace(typeNamespace))
throw new ArgumentException($"Unable to find namespace for provided type {type}.", nameof(typeNamespace));

var sampleName = simpleAssemblyName.Replace(".Sample", "");

var folderPath = typeNamespace.Replace(simpleAssemblyName, "").Trim('.').Replace('.', '/');

return $"ms-appx:///{simpleAssemblyName}/{folderPath}/{type.Name}";
return $"SourceAssets/{sampleName}/samples/{simpleAssemblyName}/{folderPath}/{type.Name}";
}
}
}
7 changes: 7 additions & 0 deletions common/Labs.Head.props
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,11 @@
<Analyzer Include="$(RepositoryDirectory)common\CommunityToolkit.Labs.Core.SourceGenerators\bin\$(Configuration)\netstandard2.0\CommunityToolkit.Labs.Core.SourceGenerators.dll" />
</ItemGroup>

<ItemGroup>
<Content Include="$(RepositoryDirectory)labs\**\samples\*.Sample\**\*.xaml" Exclude="$(RepositoryDirectory)labs\**\samples\*.Sample\obj\**\*.xaml;$(RepositoryDirectory)labs\**\samples\*.Sample\bin\**\*.xaml" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension)"/>

<!-- Link/.dat is a workaround for https://github.com/unoplatform/uno/issues/8649 -->
<Content Include="$(RepositoryDirectory)labs\**\samples\*.Sample\**\*.cs" Exclude="$(RepositoryDirectory)labs\**\samples\*.Sample\obj\**\*.cs;$(RepositoryDirectory)labs\**\samples\*.Sample\bin\**\*.cs" Link="SourceAssets/%(RecursiveDir)%(FileName)%(Extension).dat" />
</ItemGroup>

</Project>