All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.messenger4j.messengerprofile.MessengerSettings Maven / Gradle / Ivy

package com.github.messenger4j.messengerprofile;

import com.github.messenger4j.internal.Lists;
import com.github.messenger4j.messengerprofile.getstarted.StartButton;
import com.github.messenger4j.messengerprofile.greeting.Greeting;
import com.github.messenger4j.messengerprofile.homeurl.HomeUrl;
import com.github.messenger4j.messengerprofile.persistentmenu.PersistentMenu;
import com.github.messenger4j.messengerprofile.targetaudience.TargetAudience;
import java.net.URL;
import java.util.List;
import java.util.Optional;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import lombok.ToString;

/**
 * @author Max Grabenhorst
 * @since 1.0.0
 */
@ToString
@EqualsAndHashCode
public final class MessengerSettings {

    private final Optional startButton;
    private final Optional greeting;
    private final Optional persistentMenu;
    private final Optional> whitelistedDomains;
    private final Optional accountLinkingUrl;
    private final Optional homeUrl;
    private final Optional targetAudience;

    public static MessengerSettings create(@NonNull Optional startButton,
                                           @NonNull Optional greeting,
                                           @NonNull Optional persistentMenu,
                                           @NonNull Optional> whitelistedDomains,
                                           @NonNull Optional accountLinkingUrl,
                                           @NonNull Optional homeUrl,
                                           @NonNull Optional targetAudience) {
        return new MessengerSettings(startButton, greeting, persistentMenu, whitelistedDomains, accountLinkingUrl,
                homeUrl, targetAudience);
    }

    private MessengerSettings(Optional startButton,
                              Optional greeting,
                              Optional persistentMenu,
                              Optional> whitelistedDomains,
                              Optional accountLinkingUrl,
                              Optional homeUrl,
                              Optional targetAudience) {
        this.startButton = startButton;
        this.greeting = greeting;
        this.persistentMenu = persistentMenu;
        this.whitelistedDomains = whitelistedDomains.map(Lists::immutableList);
        this.accountLinkingUrl = accountLinkingUrl;
        this.homeUrl = homeUrl;
        this.targetAudience = targetAudience;
    }

    public Optional startButton() {
        return startButton;
    }

    public Optional greeting() {
        return greeting;
    }

    public Optional persistentMenu() {
        return persistentMenu;
    }

    public Optional> whitelistedDomains() {
        return whitelistedDomains;
    }

    public Optional accountLinkingUrl() {
        return accountLinkingUrl;
    }

    public Optional homeUrl() {
        return homeUrl;
    }

    public Optional targetAudience() {
        return targetAudience;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy