mirror of
https://github.com/fairyglade/ly.git
synced 2025-12-21 03:34:54 +00:00
Remember last session for each user (closes #619)
Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
@@ -5,7 +5,8 @@
|
||||
const std = @import("std");
|
||||
const ini = @import("zigini");
|
||||
const Config = @import("Config.zig");
|
||||
const Save = @import("Save.zig");
|
||||
const OldSave = @import("OldSave.zig");
|
||||
const SavedUsers = @import("SavedUsers.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
|
||||
const Color = TerminalBuffer.Color;
|
||||
@@ -186,8 +187,8 @@ pub fn lateConfigFieldHandler(config: *Config) void {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn tryMigrateSaveFile(user_buf: *[32]u8) Save {
|
||||
var save = Save{};
|
||||
pub fn tryMigrateFirstSaveFile(user_buf: *[32]u8) OldSave {
|
||||
var save = OldSave{};
|
||||
|
||||
if (maybe_save_file) |path| {
|
||||
defer temporary_allocator.free(path);
|
||||
@@ -216,3 +217,29 @@ pub fn tryMigrateSaveFile(user_buf: *[32]u8) Save {
|
||||
|
||||
return save;
|
||||
}
|
||||
|
||||
pub fn tryMigrateIniSaveFile(allocator: std.mem.Allocator, save_ini: *ini.Ini(OldSave), path: []const u8, saved_users: *SavedUsers, usernames: [][]const u8) !bool {
|
||||
var old_save_file_exists = true;
|
||||
|
||||
var user_buf: [32]u8 = undefined;
|
||||
const save = save_ini.readFileToStruct(path, .{
|
||||
.fieldHandler = null,
|
||||
.comment_characters = "#",
|
||||
}) catch no_save_file: {
|
||||
old_save_file_exists = false;
|
||||
break :no_save_file tryMigrateFirstSaveFile(&user_buf);
|
||||
};
|
||||
|
||||
if (!old_save_file_exists) return false;
|
||||
|
||||
// Add all other users to the list
|
||||
for (usernames, 0..) |username, i| {
|
||||
if (save.user) |user| {
|
||||
if (std.mem.eql(u8, user, username)) saved_users.last_username_index = i;
|
||||
}
|
||||
|
||||
try saved_users.user_list.append(allocator, .{ .username = username, .session_index = save.session_index orelse 0 });
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user