/** The canonical form of the resolved-topic prefix. */
export const RESOLVED_TOPIC_PREFIX = "✔ ";

/**
 * Pattern for an arbitrary resolved-topic prefix.
 *
 * These always begin with the canonical prefix, but can go on longer.
 */
// The class has the same characters as RESOLVED_TOPIC_PREFIX.
// It's designed to remove a weird "✔ ✔✔ " prefix, if present.
// Compare maybe_send_resolve_topic_notifications in zerver/actions/message_edit.py.
const RESOLVED_TOPIC_PREFIX_RE = /^✔ [ ✔]*/;

export function is_resolved(topic_name) {
    return topic_name.startsWith(RESOLVED_TOPIC_PREFIX);
}

export function resolve_name(topic_name) {
    return RESOLVED_TOPIC_PREFIX + topic_name;
}

/**
 * The un-resolved form of this topic name.
 *
 * If the topic is already not a resolved topic, this is the identity.
 */
export function unresolve_name(topic_name) {
    return topic_name.replace(RESOLVED_TOPIC_PREFIX_RE, "");
}

/**
 * Split the topic name for display, into a "resolved" prefix and remainder.
 *
 * The prefix is always the canonical resolved-topic prefix, or empty.
 *
 * This function is injective: different topics never produce the same
 * result, even when `unresolve_name` would give the same result.  That's a
 * property we want when listing topics in the UI, so that we don't end up
 * showing what look like several identical topics.
 */
export function display_parts(topic_name) {
    return is_resolved(topic_name)
        ? [RESOLVED_TOPIC_PREFIX, topic_name.slice(RESOLVED_TOPIC_PREFIX.length)]
        : ["", topic_name];
}
