Ejemplo n.º 1
0
    public async Task <AppConfigContainer?> Migrate(AppConfigContainer?container)
    {
        const string originalConfigKey = "current-config";
        const string originalThemeKey  = "current-theme";

        container ??= new AppConfigContainer();
        container.Item ??= new AppConfig();

        var config = await _localStorage.GetItemAsync <ProjectConfigAzureDevOps>(originalConfigKey);

        if (config != null)
        {
            container.Item.SelectedProjectId = 1;

            ProjectsMetadataContainer metadataContainer = new()
            {
                Item = new List <ProjectMetadata>
                {
                    new ProjectMetadata
                    {
                        Id          = 1,
                        Name        = "Default",
                        Path        = "default",
                        ProjectType = ProjectType.AzureDevOps
                    }
                }
            };

            await _localStorage.SetItemAsync(metadataContainer.StorageTableName, metadataContainer);

            config.Id = 1;
            ProjectContainer projectContainer = new()
            {
                Item = new ProjectStorageItem
                {
                    ProjectType = ProjectType.AzureDevOps,
                    JsonPayload = JsonSerializer.Serialize(config)
                },
                Path             = "default",
                StorageTableName = ProjectContainer.StorageKey("default")
            };

            await _localStorage.SetItemAsync(projectContainer.StorageTableName, projectContainer);
        }

        var theme = await _localStorage.GetItemAsync <ThemeSettings>(originalThemeKey);

        if (theme != null)
        {
            container.Item.ThemeSettings = theme;
        }

        container.Version = AppConfigContainer.CurrentVersion;
        await _localStorage.SetItemAsync(AppConfigContainer.StorageKey, container);

        return(container);
    }
}
Ejemplo n.º 2
0
    public async Task Remove(string?path)
    {
        if (path == null)
        {
            return;
        }

        string projectPath = ProjectContainer.StorageKey(path);

        if (await _localStorage.ContainKeyAsync(projectPath))
        {
            await _localStorage.RemoveItemAsync(projectPath);
        }
    }
Ejemplo n.º 3
0
    public async Task AddOrUpdate <TProjectConfig>(ProjectMetadata metadata, TProjectConfig projectConfig)
        where TProjectConfig : ProjectConfig
    {
        if (metadata?.Path == null)
        {
            return;
        }

        // Atm, update simply overrides current data.
        string             path        = ProjectContainer.StorageKey(metadata.Path);
        ProjectStorageItem storageItem = new()
        {
            ProjectType = projectConfig.ProjectType,
            JsonPayload = JsonSerializer.Serialize(projectConfig),
        };
        await _localStorage.SetItemAsync(path, new ProjectContainer(path, storageItem));
    }
Ejemplo n.º 4
0
    public async Task <ProjectConfig?> Get(string?path)
    {
        Console.WriteLine($"Loading project - {path}");
        if (string.IsNullOrWhiteSpace(path))
        {
            return(null);
        }

        ProjectContainer?container = await _localStorage.GetItemAsync <ProjectContainer>(ProjectContainer.StorageKey(path));

        container = await container.Migrate(() => new ProjectMigration());

        ProjectConfig?project = null;

        if (container?.Item != null)
        {
            Console.WriteLine("Parsing project - " + container.Item.ProjectType + " - " + container.Item.JsonPayload);
            ProjectStorageItem?storageItem = container.Item;
            if (storageItem.ProjectType == ProjectType.AzureDevOps)
            {
                project = JsonSerializer.Deserialize <ProjectConfigAzureDevOps>(storageItem.JsonPayload);
            }
        }

        return(project);
    }