You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.5 KiB
83 lines
3.5 KiB
|
1 month ago
|
using System;
|
||
|
|
using System.IO;
|
||
|
|
|
||
|
|
namespace Housing.Services
|
||
|
|
{
|
||
|
|
public class LoginSettings
|
||
|
|
{
|
||
|
|
public bool OfflinePreview { get; set; } = true; // 기본값은 오프라인 테스트 편의를 위해 true
|
||
|
|
public string Procedure { get; set; } = string.Empty;
|
||
|
|
public string ProcessName { get; set; } = string.Empty;
|
||
|
|
|
||
|
|
private static readonly object _loginLock = new object();
|
||
|
|
private static LoginSettings _cachedSettings;
|
||
|
|
private static DateTime _lastWriteTime;
|
||
|
|
private static string _cachedPath;
|
||
|
|
|
||
|
|
public static LoginSettings Load(string path)
|
||
|
|
{
|
||
|
|
lock (_loginLock)
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
if (File.Exists(path))
|
||
|
|
{
|
||
|
|
var currentWriteTime = File.GetLastWriteTime(path);
|
||
|
|
if (_cachedSettings != null && _cachedPath == path && _lastWriteTime == currentWriteTime)
|
||
|
|
{
|
||
|
|
return _cachedSettings;
|
||
|
|
}
|
||
|
|
|
||
|
|
var settings = new LoginSettings();
|
||
|
|
var lines = File.ReadAllLines(path);
|
||
|
|
foreach (var line in lines)
|
||
|
|
{
|
||
|
|
var trimmed = line.Trim();
|
||
|
|
if (trimmed.StartsWith("OfflinePreview", StringComparison.OrdinalIgnoreCase))
|
||
|
|
{
|
||
|
|
var parts = trimmed.Split(new[] { '=' }, 2);
|
||
|
|
if (parts.Length == 2)
|
||
|
|
{
|
||
|
|
if (bool.TryParse(parts[1].Trim(), out var val))
|
||
|
|
{
|
||
|
|
settings.OfflinePreview = val;
|
||
|
|
}
|
||
|
|
else if (int.TryParse(parts[1].Trim(), out var intVal))
|
||
|
|
{
|
||
|
|
settings.OfflinePreview = intVal != 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (trimmed.StartsWith("Procedure", StringComparison.OrdinalIgnoreCase))
|
||
|
|
{
|
||
|
|
var parts = trimmed.Split(new[] { '=' }, 2);
|
||
|
|
if (parts.Length == 2)
|
||
|
|
{
|
||
|
|
settings.Procedure = parts[1].Trim();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (trimmed.StartsWith("ProcessName", StringComparison.OrdinalIgnoreCase))
|
||
|
|
{
|
||
|
|
var parts = trimmed.Split(new[] { '=' }, 2);
|
||
|
|
if (parts.Length == 2)
|
||
|
|
{
|
||
|
|
settings.ProcessName = parts[1].Trim();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
_cachedSettings = settings;
|
||
|
|
_lastWriteTime = currentWriteTime;
|
||
|
|
_cachedPath = path;
|
||
|
|
return settings;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
catch (Exception ex)
|
||
|
|
{
|
||
|
|
System.Diagnostics.Debug.WriteLine($"[LoginSettings Load Error] {ex.Message}");
|
||
|
|
}
|
||
|
|
return _cachedSettings ?? new LoginSettings();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|