Ferrite.Data/Repositories/SignUpNotificationRepository.cs
Rama main · réplica de lectura del repositorio original.
// SPDX-License-Identifier: AGPL-3.0-or-later
// Copyright (C) 2022-2026 Aykut Alparslan KOC
namespace Ferrite.Data.Repositories;
using Ferrite.TL;
using Ferrite.TL.baseLayer.dto;
public class SignUpNotificationRepository : ISignUpNotificationRepository
{
private readonly IKVStore _store;
public SignUpNotificationRepository(IKVStore store)
{
_store = store;
_store.SetSchema(new TableDefinition("ferrite", "signup_notifications_tl1",
new KeyDefinition("pk",
new DataColumn { Name = "user_id", Type = DataType.Long })));
}
public bool PutSignUpNotification(long userId, bool silent)
{
using var row = SignUpNotificationState.Builder().Silent(silent).Build();
return _store.Put(row.ToReadOnlySpan().ToArray(), userId);
}
public bool GetSignUpNotification(long userId)
{
var val = _store.Get(userId);
if (val == null) return false;
var value = new TLBytes(val, 0, val.Length);
if (value.Constructor != Constructors.baseLayer_SignUpNotificationState)
throw new InvalidDataException("Sign-up notification codec/version mismatch.");
return ((TLSignUpNotificationState)value).AsSignUpNotificationState().Silent;
}
}