// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.

import {SearchMessagesScreen} from '@support/ui/screen';
import {timeouts} from '@support/utils';
import {expect} from 'detox';

class TeamDropdownMenuScreen {
    testID = {
        teamDropdownMenuScreen: 'search.select_team_slide_up.screen',
    };

    teamDropdownMenuScreen = element(by.id(this.testID.teamDropdownMenuScreen));

    getTeamIcon = (teamId: string) => {
        return element(by.id(`team_sidebar.team_list.team_list_item.${teamId}.team_icon`));
    };

    getTeamDisplayName = (teamId: string) => {
        return element(by.id(`team_sidebar.team_list.team_list_item.${teamId}.team_display_name`));
    };

    toBeVisible = async () => {
        await waitFor(this.teamDropdownMenuScreen).toExist().withTimeout(timeouts.TEN_SEC);

        return this.teamDropdownMenuScreen;
    };

    open = async () => {
        // # Open team dropdown menu screen
        await SearchMessagesScreen.teamPickerButton.tap();

        return this.toBeVisible();
    };

    close = async () => {
        await this.teamDropdownMenuScreen.tap({x: 5, y: 10});
        await expect(this.teamDropdownMenuScreen).not.toBeVisible();
    };
}

const teamDropdownMenuScreen = new TeamDropdownMenuScreen();
export default teamDropdownMenuScreen;
