Ctrl K
ComunidadGuías…

Ferrite.Data/Repositories/SignUpNotificationRepository.cs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
// 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;
    }
}