Fix save file initialisation & incorrect saved session index

Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
AnErrupTion
2025-12-05 19:49:27 +01:00
parent 7e18d906c4
commit 92beb24c80
2 changed files with 12 additions and 7 deletions

View File

@@ -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();

View File

@@ -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 {