tabs->spaces etc

This commit is contained in:
Loporrit
2025-06-30 13:38:45 +00:00
parent 91e4b36571
commit 810bf78d9c
9 changed files with 80 additions and 96 deletions

View File

@@ -2,9 +2,9 @@
public enum TextureShrinkMode public enum TextureShrinkMode
{ {
Never, Never,
Default, Default,
DefaultHiRes, DefaultHiRes,
Always, Always,
AlwaysHiRes AlwaysHiRes
} }

View File

@@ -1,14 +0,0 @@
{
"Author": "darkarchon",
"Name": "Mare Synchronos",
"Punchline": "Let others see you as you see yourself.",
"Description": "This plugin will synchronize your Penumbra mods and current Glamourer state with other paired clients automatically.",
"InternalName": "mareSynchronos",
"ApplicableVersion": "any",
"Tags": [
"customization"
],
"IconUrl": "https://raw.githubusercontent.com/Penumbra-Sync/client/main/MareSynchronos/images/logo.png",
"RepoUrl": "https://github.com/Penumbra-Sync/client",
"CanUnloadAsync": true
}

View File

@@ -6,29 +6,29 @@ namespace MareSynchronos.Utils;
public static class ChatUtils public static class ChatUtils
{ {
// Based on https://git.anna.lgbt/anna/ExtraChat/src/branch/main/client/ExtraChat/Util/PayloadUtil.cs // Based on https://git.anna.lgbt/anna/ExtraChat/src/branch/main/client/ExtraChat/Util/PayloadUtil.cs
// This must store a Guid (16 bytes), as Chat 2 converts the data back to one // This must store a Guid (16 bytes), as Chat 2 converts the data back to one
public static RawPayload CreateExtraChatTagPayload(Guid guid) public static RawPayload CreateExtraChatTagPayload(Guid guid)
{ {
var header = (byte[])[ var header = (byte[])[
0x02, // Payload.START_BYTE 0x02, // Payload.START_BYTE
0x27, // SeStringChunkType.Interactable 0x27, // SeStringChunkType.Interactable
2 + 16, // remaining length: ExtraChat sends 19 here but I think its an error 2 + 16, // remaining length: ExtraChat sends 19 here but I think its an error
0x20 // Custom ExtraChat InfoType 0x20 // Custom ExtraChat InfoType
]; ];
var footer = (byte)0x03; // Payload.END_BYTE var footer = (byte)0x03; // Payload.END_BYTE
return new RawPayload([..header, ..guid.ToByteArray(), footer]); return new RawPayload([..header, ..guid.ToByteArray(), footer]);
} }
// We have a unique identifier in the form of a GID, which can be consistently mapped to the same GUID // We have a unique identifier in the form of a GID, which can be consistently mapped to the same GUID
public static RawPayload CreateExtraChatTagPayload(string gid) public static RawPayload CreateExtraChatTagPayload(string gid)
{ {
var gidBytes = UTF8Encoding.UTF8.GetBytes(gid); var gidBytes = UTF8Encoding.UTF8.GetBytes(gid);
var hashedBytes = MD5.HashData(gidBytes); var hashedBytes = MD5.HashData(gidBytes);
var guid = new Guid(hashedBytes); var guid = new Guid(hashedBytes);
return CreateExtraChatTagPayload(guid); return CreateExtraChatTagPayload(guid);
} }
} }

View File

@@ -1,6 +1,6 @@
using System.Security.Cryptography; using System.Security.Cryptography;
namespace MareSynchronosStaticFilesServer.Utils; namespace MareSynchronos.Utils;
// Calculates the hash of content read or written to a stream // Calculates the hash of content read or written to a stream
public class HashingStream : Stream public class HashingStream : Stream

View File

@@ -4,8 +4,8 @@ namespace MareSynchronos.Utils;
public class LimitedStream : Stream public class LimitedStream : Stream
{ {
private readonly Stream _stream; private readonly Stream _stream;
public long _estimatedPosition = 0; public long _estimatedPosition = 0;
public long MaxPosition { get; private init; } public long MaxPosition { get; private init; }
public bool DisposeUnderlying = true; public bool DisposeUnderlying = true;
public Stream UnderlyingStream { get => _stream; } public Stream UnderlyingStream { get => _stream; }
@@ -13,12 +13,12 @@ public class LimitedStream : Stream
public LimitedStream(Stream underlyingStream, long byteLimit) public LimitedStream(Stream underlyingStream, long byteLimit)
{ {
_stream = underlyingStream; _stream = underlyingStream;
try try
{ {
_estimatedPosition = Position; _estimatedPosition = Position;
} }
catch { } catch { }
MaxPosition = _estimatedPosition + byteLimit; MaxPosition = _estimatedPosition + byteLimit;
} }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
@@ -42,33 +42,33 @@ public class LimitedStream : Stream
public override int Read(byte[] buffer, int offset, int count) public override int Read(byte[] buffer, int offset, int count)
{ {
int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue); int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue);
if (count > remainder) if (count > remainder)
count = remainder; count = remainder;
int n = _stream.Read(buffer, offset, count); int n = _stream.Read(buffer, offset, count);
_estimatedPosition += n; _estimatedPosition += n;
return n; return n;
} }
public async override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) public async override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{ {
int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue); int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue);
if (count > remainder) if (count > remainder)
count = remainder; count = remainder;
int n = await _stream.ReadAsync(buffer, offset, count, cancellationToken); int n = await _stream.ReadAsync(buffer, offset, count, cancellationToken);
_estimatedPosition += n; _estimatedPosition += n;
return n; return n;
} }
public override long Seek(long offset, SeekOrigin origin) public override long Seek(long offset, SeekOrigin origin)
{ {
long result = _stream.Seek(offset, origin); long result = _stream.Seek(offset, origin);
_estimatedPosition = result; _estimatedPosition = result;
return result; return result;
} }
public override void SetLength(long value) public override void SetLength(long value)
@@ -78,23 +78,23 @@ public class LimitedStream : Stream
public override void Write(byte[] buffer, int offset, int count) public override void Write(byte[] buffer, int offset, int count)
{ {
int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue); int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue);
if (count > remainder) if (count > remainder)
count = remainder; count = remainder;
_stream.Write(buffer, offset, count); _stream.Write(buffer, offset, count);
_estimatedPosition += count; _estimatedPosition += count;
} }
public async override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) public async override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{ {
int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue); int remainder = (int)long.Clamp(MaxPosition - _estimatedPosition, 0, int.MaxValue);
if (count > remainder) if (count > remainder)
count = remainder; count = remainder;
await _stream.WriteAsync(buffer, offset, count, cancellationToken); await _stream.WriteAsync(buffer, offset, count, cancellationToken);
_estimatedPosition += count; _estimatedPosition += count;
} }
} }

View File

@@ -8,7 +8,6 @@ using MareSynchronos.PlayerData.Handlers;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using MareSynchronos.Utils; using MareSynchronos.Utils;
using MareSynchronos.WebAPI.Files.Models; using MareSynchronos.WebAPI.Files.Models;
using MareSynchronosStaticFilesServer.Utils;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Net; using System.Net;
using System.Net.Http.Json; using System.Net.Http.Json;
@@ -189,7 +188,7 @@ public partial class FileDownloadManager : DisposableMediatorSubscriberBase
{ {
throw; throw;
} }
catch (Exception ex) catch (Exception)
{ {
try try
{ {

View File

@@ -5,8 +5,8 @@ namespace MareSynchronos.WebAPI.SignalR;
public record HubConnectionConfig public record HubConnectionConfig
{ {
[JsonPropertyName("hub_url")] [JsonPropertyName("hub_url")]
public string HubUrl { get; set; } = string.Empty; public string HubUrl { get; set; } = string.Empty;
private readonly bool? _skipNegotiation; private readonly bool? _skipNegotiation;
@@ -20,28 +20,28 @@ public record HubConnectionConfig
[JsonPropertyName("transports")] [JsonPropertyName("transports")]
public string[]? Transports { get; set; } public string[]? Transports { get; set; }
[JsonIgnore] [JsonIgnore]
public HttpTransportType TransportType public HttpTransportType TransportType
{ {
get get
{ {
if (Transports == null || Transports.Length == 0) if (Transports == null || Transports.Length == 0)
return HttpTransportType.WebSockets; return HttpTransportType.WebSockets;
HttpTransportType result = HttpTransportType.None; HttpTransportType result = HttpTransportType.None;
foreach (var transport in Transports) foreach (var transport in Transports)
{ {
result |= transport.ToLowerInvariant() switch result |= transport.ToLowerInvariant() switch
{ {
"websockets" => HttpTransportType.WebSockets, "websockets" => HttpTransportType.WebSockets,
"serversentevents" => HttpTransportType.ServerSentEvents, "serversentevents" => HttpTransportType.ServerSentEvents,
"longpolling" => HttpTransportType.LongPolling, "longpolling" => HttpTransportType.LongPolling,
_ => HttpTransportType.None _ => HttpTransportType.None
}; };
}; };
return result; return result;
} }
} }
} }

View File

@@ -119,7 +119,6 @@ public class HubFactory : MediatorSubscriberBase
var ver = Assembly.GetExecutingAssembly().GetName().Version; var ver = Assembly.GetExecutingAssembly().GetName().Version;
httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MareSynchronos", ver!.Major + "." + ver!.Minor + "." + ver!.Build)); httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MareSynchronos", ver!.Major + "." + ver!.Minor + "." + ver!.Build));
// Make a GET request to the loporrit endpoint
var response = await httpClient.GetAsync(wellKnownUrl).ConfigureAwait(false); var response = await httpClient.GetAsync(wellKnownUrl).ConfigureAwait(false);
if (!response.IsSuccessStatusCode) if (!response.IsSuccessStatusCode)

View File

@@ -7,7 +7,7 @@ using MareSynchronos.Utils;
using MareSynchronos.API.Dto; using MareSynchronos.API.Dto;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.IdentityModel.Tokens.Jwt; using System.Net;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Reflection; using System.Reflection;
@@ -76,7 +76,7 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber
new KeyValuePair<string, string>("charaIdent", await _dalamudUtil.GetPlayerNameHashedAsync().ConfigureAwait(false)), new KeyValuePair<string, string>("charaIdent", await _dalamudUtil.GetPlayerNameHashedAsync().ConfigureAwait(false)),
}), token).ConfigureAwait(false); }), token).ConfigureAwait(false);
if (!result.IsSuccessStatusCode) if (result.StatusCode == HttpStatusCode.NotFound)
{ {
tokenUri = MareAuth.AuthFullPath(new Uri(_serverManager.CurrentApiUrl tokenUri = MareAuth.AuthFullPath(new Uri(_serverManager.CurrentApiUrl
.Replace("wss://", "https://", StringComparison.OrdinalIgnoreCase) .Replace("wss://", "https://", StringComparison.OrdinalIgnoreCase)
@@ -87,14 +87,14 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber
new KeyValuePair<string, string>("charaIdent", await _dalamudUtil.GetPlayerNameHashedAsync().ConfigureAwait(false)), new KeyValuePair<string, string>("charaIdent", await _dalamudUtil.GetPlayerNameHashedAsync().ConfigureAwait(false)),
}), token).ConfigureAwait(false); }), token).ConfigureAwait(false);
var textResponse = await result.Content.ReadAsStringAsync().ConfigureAwait(false) ?? string.Empty; var textResponse = await result.Content.ReadAsStringAsync(token).ConfigureAwait(false) ?? string.Empty;
result.EnsureSuccessStatusCode(); result.EnsureSuccessStatusCode();
_tokenCache[identifier] = textResponse; _tokenCache[identifier] = textResponse;
_wellKnownCache[_serverManager.CurrentApiUrl] = null; _wellKnownCache[_serverManager.CurrentApiUrl] = null;
return textResponse; return textResponse;
} }
var response = await result.Content.ReadFromJsonAsync<AuthReplyDto>().ConfigureAwait(false) ?? new(); var response = await result.Content.ReadFromJsonAsync<AuthReplyDto>(token).ConfigureAwait(false) ?? new();
result.EnsureSuccessStatusCode(); result.EnsureSuccessStatusCode();
_tokenCache[identifier] = response.Token; _tokenCache[identifier] = response.Token;
_wellKnownCache[_serverManager.CurrentApiUrl] = response.WellKnown; _wellKnownCache[_serverManager.CurrentApiUrl] = response.WellKnown;
@@ -107,7 +107,7 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber
_logger.LogError(ex, "GetNewToken: Failure to get token"); _logger.LogError(ex, "GetNewToken: Failure to get token");
if (ex.StatusCode == System.Net.HttpStatusCode.Unauthorized) if (ex.StatusCode == HttpStatusCode.Unauthorized)
{ {
Mediator.Publish(new NotificationMessage("Error refreshing token", "Your authentication token could not be renewed. Try reconnecting manually.", NotificationType.Error)); Mediator.Publish(new NotificationMessage("Error refreshing token", "Your authentication token could not be renewed. Try reconnecting manually.", NotificationType.Error));
Mediator.Publish(new DisconnectedMessage()); Mediator.Publish(new DisconnectedMessage());