Change dm list indexing
All checks were successful
Server Build / publish (push) Successful in 28s
Voice Build / publish (push) Successful in 25s

This commit is contained in:
olcxja 2026-05-10 19:12:33 +02:00
commit 9abd013e91
3 changed files with 55 additions and 68 deletions

View file

@ -100,10 +100,8 @@ public class Requests
string inviteFile = ACCOUNTS_DATA_DIR + $"/{id}/dminvites/recv/{id2};{domain}";
if (Fs.Exists(inviteFile))
{
List<(string file, string todo, string content)> restoreList = new();
try //try because federation is involved, if it fails we should just clean all written files
try
{
Fs.DeleteFile(inviteFile); //remove invite bc now its accepted (error = no invite & no dm)
@ -145,20 +143,8 @@ public class Requests
JsonSerializer.Serialize(startingMessage, AppJsonSerializerContext.Default.Message)
));
restoreList.Add(($"{ROOMS_DIR}/dms/{DOMAIN}/{dmId}", "deletef", ""));
string dmspath = $"{ACCOUNTS_DATA_DIR}/{id}/dms";
string dms;
if (!Fs.Exists(dmspath))
{
dms = "";
}
else
{
dms = Encoding.UTF8.GetString(await Fs.ReadFile(dmspath));
}
restoreList.Add((dmspath, "write", dms));
await Fs.WriteFile(dmspath, Encoding.UTF8.GetBytes($"{dmId};{dms}"));
await Account.Utils.UpdateUserDm(id, dmId, "false",
startingMessage.timestamp);
if (isUserLocal)
{
@ -166,22 +152,8 @@ public class Requests
await userLock.WaitAsync();
try
{
string dms2path = $"{ACCOUNTS_DATA_DIR}/{id2}/dms";
string dms2;
if (await Account.Utils.NameFromId(id2) == "") //if user2 account just got deleted
{
return "DM accepted";
}
if (!Fs.Exists(dms2path))
{
dms2 = "";
}
else
{
dms2 = Encoding.UTF8.GetString(await Fs.ReadFile(dms2path));
}
await Fs.WriteFile(dms2path, Encoding.UTF8.GetBytes($"{dmId};{dms2}"));
await Account.Utils.UpdateUserDm(id2, dmId, "false",
startingMessage.timestamp);
}
finally
{
@ -196,21 +168,7 @@ public class Requests
}
catch (Exception e)
{
foreach (var entry in restoreList)
{
if (entry.todo == "delete")
{
Fs.DeleteFile(entry.file);
}
if (entry.todo == "deletef")
{
Fs.DeleteDirectory(entry.file);
}
if (entry.todo == "write")
{
await Fs.WriteFile(entry.file, Encoding.UTF8.GetBytes(entry.content));
}
}
return "Failed to accept DM. Ask for another invite";
}