diff --git a/src/main.zig b/src/main.zig index 608f4e2..d1e429f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -259,10 +259,10 @@ pub fn main() !void { .session_index = session_index, }); } + } - // If no save file previously existed, fill it up with all usernames - if (saved_users.user_list.items.len > 0) break :read_save_file; - + // If no save file previously existed, fill it up with all usernames + if (config.save and saved_users.user_list.items.len == 0) { for (usernames.items) |user| { try saved_users.user_list.append(allocator, .{ .username = user, @@ -408,6 +408,9 @@ pub fn main() !void { var session = Session.init(allocator, &buffer, &login); defer session.deinit(); + login = try UserList.init(allocator, &buffer, usernames, &saved_users, &session); + defer login.deinit(); + addOtherEnvironment(&session, lang, .shell, null) catch |err| { try info_line.addMessage(lang.err_alloc, config.error_bg, config.error_fg); try log_writer.print("failed to add shell environment: {s}\n", .{@errorName(err)}); @@ -467,9 +470,6 @@ pub fn main() !void { try log_writer.writeAll("no users found\n"); } - login = try UserList.init(allocator, &buffer, usernames, &saved_users, &session); - defer login.deinit(); - var password = Text.init(allocator, &buffer, true, config.asterisk); defer password.deinit(); diff --git a/src/tui/components/Session.zig b/src/tui/components/Session.zig index 4417e06..ac6188b 100644 --- a/src/tui/components/Session.zig +++ b/src/tui/components/Session.zig @@ -17,10 +17,12 @@ const EnvironmentLabel = generic.CyclableLabel(Env, *UserList); const Session = @This(); label: EnvironmentLabel, +user_list: *UserList, pub fn init(allocator: Allocator, buffer: *TerminalBuffer, user_list: *UserList) Session { return .{ .label = EnvironmentLabel.init(allocator, buffer, drawItem, sessionChanged, user_list), + .user_list = user_list, }; } @@ -36,7 +38,10 @@ pub fn deinit(self: *Session) void { } pub fn addEnvironment(self: *Session, environment: Environment) !void { - try self.label.addItem(.{ .environment = environment, .index = self.label.list.items.len }); + const env = Env{ .environment = environment, .index = self.label.list.items.len }; + + try self.label.addItem(env); + sessionChanged(env, self.user_list); } fn sessionChanged(env: Env, maybe_user_list: ?*UserList) void {