//
// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//

extension URL {
    public enum Support {
        public static let backups: URL = .supportArticle("9708267671322")
        public static let contactAccessNotAllowed: URL = .supportArticle("360007319011#ipad_contacts")
        public static let debugLogs: URL = .supportArticle("360007318591")
        public static let deliveryIssue: URL = .supportArticle("4404859745690")
        public static let generic: URL = URL(string: "https://support.signal.org")!
        public static let groups: URL = .supportArticle("360007319331")
        public static let inactivePrimaryDevice: URL = .supportArticle("9021007554074")
        public static let linkedDevices: URL = .supportArticle("360007320551")
        public static let pin: URL = .supportArticle("360007059792")
        public static let profilesAndMessageRequests: URL = .supportArticle("360007459591")
        public static let proxies: URL = .supportArticle("360056052052")
        public static let requestingAccountData: URL = .supportArticle("5538911756954")
        public static let safetyNumbers: URL = .supportArticle("360007060632")
        public static let keyTransparency: URL = .supportArticle("10223569377562")
        public static let troubleshootingMultipleDevices: URL = .supportArticle("360007320451")
        public static let unsupportedOS: URL = .supportArticle("5109141421850")

        public enum Donations {
            public static let badgeExpiration: URL = .supportArticle("360031949872#fix")
            public static let donationPending: URL = .supportArticle("360031949872#pending")
            public static let donorFAQ: URL = .supportArticle("360031949872")
            public static let subscriptionFAQ: URL = .supportArticle("4408365318426")
        }

        public enum Payments {
            public static let currencyConversion: URL = .supportArticle("360057625692#payments_currency_conversion")
            public static let deactivate: URL = .supportArticle("360057625692#payments_deactivate")
            public static let details: URL = .supportArticle("360057625692#payments_details")
            public static let transferFromExchange: URL = .supportArticle("360057625692#payments_transfer_from_exchange")
            public static let transferToExchange: URL = .supportArticle("360057625692#payments_transfer_to_exchange")
            public static let walletRestorePassphrase: URL = .supportArticle("360057625692#payments_wallet_restore_passphrase")
            public static let walletViewPassphrase: URL = .supportArticle("360057625692#payments_wallet_view_passphrase")
            public static let whichOnes: URL = .supportArticle("360057625692#payments_which_ones")
        }
    }

    private static func supportArticle(_ slug: String) -> URL {
        self.init(string: "https://support.signal.org/hc/articles/\(slug)")!
    }
}
