/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.

For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once

#include "ui/layers/box_content.h"

class UserData;
class ChannelData;

namespace Main {
class Session;
} // namespace Main

namespace Window {
class SessionController;
} // namespace Window

namespace Data {
class CloudImageView;
class PhotoMedia;
} // namespace Data

namespace Ui {
class EmptyUserpic;
} // namespace Ui

namespace Api {

void CheckChatInvite(
	not_null<Window::SessionController*> controller,
	const QString &hash,
	ChannelData *invitePeekChannel = nullptr);

} // namespace Api

class ConfirmInviteBox final : public Ui::BoxContent {
public:
	ConfirmInviteBox(
		QWidget*,
		not_null<Main::Session*> session,
		const MTPDchatInvite &data,
		ChannelData *invitePeekChannel,
		Fn<void()> submit);
	~ConfirmInviteBox();

protected:
	void prepare() override;

	void resizeEvent(QResizeEvent *e) override;
	void paintEvent(QPaintEvent *e) override;

private:
	struct Participant {
		not_null<UserData*> user;
		std::shared_ptr<Data::CloudImageView> userpic;
	};
	static std::vector<Participant> GetParticipants(
		not_null<Main::Session*> session,
		const MTPDchatInvite &data);

	const not_null<Main::Session*> _session;

	Fn<void()> _submit;
	object_ptr<Ui::FlatLabel> _title;
	object_ptr<Ui::FlatLabel> _status;
	object_ptr<Ui::FlatLabel> _about;
	object_ptr<Ui::FlatLabel> _aboutRequests;
	std::shared_ptr<Data::PhotoMedia> _photo;
	std::unique_ptr<Ui::EmptyUserpic> _photoEmpty;
	std::vector<Participant> _participants;
	bool _isChannel = false;
	bool _requestApprove = false;

	int _userWidth = 0;

};