import os
from typing import List

from zerver.lib.storage import static_path


def get_available_notification_sounds() -> List[str]:
    notification_sounds_path = static_path("audio/notification_sounds")
    available_notification_sounds = []

    for file_name in os.listdir(notification_sounds_path):
        root, ext = os.path.splitext(file_name)
        if "." in root:  # nocoverage
            # Exclude e.g. zulip.abcd1234.ogg (generated by production hash-naming)
            # to avoid spurious duplicates.
            continue
        if ext == ".ogg":
            available_notification_sounds.append(root)

    return sorted(available_notification_sounds)
