diff --git a/.gitignore b/.gitignore
index 086c047..a6584fc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -351,3 +351,4 @@ MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
+/src/BSLManager/Properties/launchSettings.json
diff --git a/src/BSLManager/BSLManager.csproj b/src/BSLManager/BSLManager.csproj
index fafc29d..28c8e18 100644
--- a/src/BSLManager/BSLManager.csproj
+++ b/src/BSLManager/BSLManager.csproj
@@ -6,7 +6,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/BSLManager/Bootstrapper.cs b/src/BSLManager/Bootstrapper.cs
new file mode 100644
index 0000000..f450665
--- /dev/null
+++ b/src/BSLManager/Bootstrapper.cs
@@ -0,0 +1,62 @@
+using System;
+using BirdsiteLive.Common.Settings;
+using BirdsiteLive.Common.Structs;
+using BirdsiteLive.DAL.Contracts;
+using BirdsiteLive.DAL.Postgres.DataAccessLayers;
+using BirdsiteLive.DAL.Postgres.Settings;
+using Lamar;
+
+namespace BSLManager
+{
+ public class Bootstrapper
+ {
+ private readonly DbSettings _settings;
+
+ #region Ctor
+ public Bootstrapper(DbSettings settings)
+ {
+ _settings = settings;
+ }
+ #endregion
+
+ public Container Init()
+ {
+ var container = new Container(x =>
+ {
+ if (string.Equals(_settings.Type, DbTypes.Postgres, StringComparison.OrdinalIgnoreCase))
+ {
+ var connString = $"Host={_settings.Host};Username={_settings.User};Password={_settings.Password};Database={_settings.Name}";
+ var postgresSettings = new PostgresSettings
+ {
+ ConnString = connString
+ };
+ x.For().Use(x => postgresSettings);
+
+ x.For().Use().Singleton();
+ x.For().Use().Singleton();
+ x.For().Use().Singleton();
+ }
+ else
+ {
+ throw new NotImplementedException($"{_settings.Type} is not supported");
+ }
+
+ x.Scan(_ =>
+ {
+ //_.Assembly("BirdsiteLive.Twitter");
+ //_.Assembly("BirdsiteLive.Domain");
+ _.Assembly("BirdsiteLive.DAL");
+ _.Assembly("BirdsiteLive.DAL.Postgres");
+ //_.Assembly("BirdsiteLive.Moderation");
+ //_.Assembly("BirdsiteLive.Pipeline");
+ _.TheCallingAssembly();
+
+ _.WithDefaultConventions();
+
+ _.LookForRegistries();
+ });
+ });
+ return container;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/BSLManager/Program.cs b/src/BSLManager/Program.cs
index ff1a8bd..2f90e8d 100644
--- a/src/BSLManager/Program.cs
+++ b/src/BSLManager/Program.cs
@@ -1,7 +1,12 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Reflection;
using System.Text;
+using System.Threading.Tasks;
+using BirdsiteLive.Common.Settings;
+using BirdsiteLive.DAL.Contracts;
+using Microsoft.Extensions.Configuration;
using NStack;
using Terminal.Gui;
@@ -9,10 +14,35 @@ namespace BSLManager
{
class Program
{
- static void Main(string[] args)
+ static async Task Main(string[] args)
{
Console.OutputEncoding = Encoding.Default;
+ var settings = GetSettings();
+
+ var bootstrapper = new Bootstrapper(settings);
+ var container = bootstrapper.Init();
+
+ var followersDal = container.GetInstance();
+
+ await LaunchAppAsync(followersDal);
+ }
+
+ private static DbSettings GetSettings()
+ {
+ var builder = new ConfigurationBuilder()
+ .AddEnvironmentVariables();
+ var configuration = builder.Build();
+
+ var dbSettings = configuration.GetSection("Db").Get();
+ return dbSettings;
+ }
+
+ private static async Task LaunchAppAsync(IFollowersDal followersDal)
+ {
+ var followers = await followersDal.GetAllFollowersAsync();
+ var orderedFollowers = followers.OrderByDescending(x => x.Followings.Count).ToList();
+
Application.Init();
var top = Application.Top;
@@ -30,9 +60,14 @@ namespace BSLManager
top.Add(win);
// Creates a menubar, the item "New" has a help menu.
- var menu = new MenuBar(new MenuBarItem[] {
- new MenuBarItem ("_File", new MenuItem [] {
- new MenuItem ("_Quit", "", () => { if (Quit ()) top.Running = false; })
+ var menu = new MenuBar(new MenuBarItem[]
+ {
+ new MenuBarItem("_File", new MenuItem[]
+ {
+ new MenuItem("_Quit", "", () =>
+ {
+ if (Quit()) top.Running = false;
+ })
}),
//new MenuBarItem ("_Edit", new MenuItem [] {
// new MenuItem ("_Copy", "", null),
@@ -47,11 +82,11 @@ namespace BSLManager
var n = MessageBox.Query(50, 7, "Quit BSL Manager", "Are you sure you want to quit?", "Yes", "No");
return n == 0;
}
-
+
var listData = new List();
- for (var i = 0; i < 100; i++)
+ foreach (var follower in orderedFollowers)
{
- listData.Add($"@User{i}@Instance.tld {i*3}");
+ listData.Add($"@{follower.Acct}@{follower.Host} {follower.Followings.Count}");
}
var list = new ListView(listData)
@@ -102,7 +137,8 @@ namespace BSLManager
if (okpressed)
{
listData.RemoveAt(el);
- typeof(Application).GetMethod("TerminalResized", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null);
+ typeof(Application).GetMethod("TerminalResized", BindingFlags.Static | BindingFlags.NonPublic)
+ .Invoke(null, null);
}
}
};
@@ -114,6 +150,6 @@ namespace BSLManager
);
Application.Run();
- }
+ }
}
}