add "user/invites/sent" and "user/invites/received" requests
All checks were successful
Server Build / publish (push) Successful in 29s
Voice Build / publish (push) Successful in 25s

This commit is contained in:
olcxja 2026-05-21 08:29:13 +02:00
commit 93fd8312da
4 changed files with 49 additions and 11 deletions

View file

@ -535,6 +535,18 @@ public class Requests
{
switch (serializedBody.string1)
{
case "user/invites/sent":
await context.Response.WriteAsync(
Encryption.Encryption.EncryptString(
await Utils.GetUserSentInvites(id)
, password));
break;
case "user/invites/received":
await context.Response.WriteAsync(
Encryption.Encryption.EncryptString(
await Utils.GetUserReceivedInvites(id)
, password));
break;
case "user/key/update":
await context.Response.WriteAsync(
Encryption.Encryption.EncryptString(

View file

@ -180,6 +180,35 @@ public class Utils
await Fs.WriteFile(path, Encoding.UTF8.GetBytes(newPassword));
}
public static async Task<string> GetUserSentInvites(string id)
{
string path = $"{ACCOUNTS_DATA_DIR}/{id}/dminvites/sent";
if (!Fs.Exists(path))
{
return "";
}
string[] invites = Fs.ReadDirectory(path);
if (invites.Length == 0)
{
return "";
}
return string.Join(",", invites);
}
public static async Task<string> GetUserReceivedInvites(string id)
{
string path = $"{ACCOUNTS_DATA_DIR}/{id}/dminvites/recv";
if (!Fs.Exists(path))
{
return "";
}
string[] invites = Fs.ReadDirectory(path);
if (invites.Length == 0)
{
return "";
}
return string.Join(",", invites);
}
public static async Task UpdateUserKeys(string id, string body)
{
if (!Fs.Exists($"{ACCOUNTS_DATA_DIR}/{id}/secret"))
@ -250,7 +279,7 @@ public class Utils
string dms = "{";
foreach (var dmfile in Fs.ReadDirectory(path))
{
dms += $"{Encoding.UTF8.GetString(await Fs.ReadFile(dmfile))},";
dms += $"{Encoding.UTF8.GetString(await Fs.ReadFile($"{path}/{dmfile}"))},";
}
return dms.Substring(0, dms.Length - 1) + "}";

View file

@ -356,7 +356,7 @@ public class Fs
return Array.Empty<string>();
}
directoryData = Directory.GetFileSystemEntries(path, "*", SearchOption.TopDirectoryOnly);
directoryData = Directory.GetFileSystemEntries(path, "*", SearchOption.TopDirectoryOnly).Select(Path.GetFileName).ToArray();
dirCache[path] = directoryData;
return directoryData;
}

View file

@ -37,16 +37,14 @@ public class Requests
try
{
string inviteFile = ACCOUNTS_DATA_DIR + $"/{id2}/dminvites/recv/{id};{DOMAIN}";
string inviteFile = ACCOUNTS_DATA_DIR + $"/{id2}/dminvites/recv/{id}";
if (Fs.Exists(inviteFile))
{
return "info:user.already.invited";
}
await Fs.WriteFile(inviteFile, Encoding.UTF8.GetBytes("0"));
//im not saving this like ts is litterally local scenario
//await Fs.WriteFile(inviteSentFile, []); //we should also save that this user invited someone, because this will act as dm accept verification while federating
await Fs.WriteFile(ACCOUNTS_DATA_DIR + $"/{id}/dminvites/sent/{id2}", []); //we should also save that this user invited someone, because listing sent invites is cool
}
finally
{
@ -81,14 +79,13 @@ public class Requests
if (isUserLocal)
{
/*
string inviteSentFile = ACCOUNTS_DATA_DIR + $"/{id2}/dminvites/sent/{id};{DOMAIN}";
string inviteSentFile = ACCOUNTS_DATA_DIR + $"/{id2}/dminvites/sent/{id}";
if (!Fs.Exists(inviteSentFile))
{
return "You can't create a DM without an invitation";
return "error:cant.create.dm.without.invitation";
}
Fs.DeleteFile(inviteSentFile);
*/ // local scenario, there is no need to check sent
}
else //check sent on federated server
{
@ -98,7 +95,7 @@ public class Requests
}
}
string inviteFile = ACCOUNTS_DATA_DIR + $"/{id}/dminvites/recv/{id2};{domain}";
string inviteFile = $"{ACCOUNTS_DATA_DIR}/{id}/dminvites/recv/{id2}" + (isUserLocal ? "" : $";{domain}");
if (Fs.Exists(inviteFile))
{