openPopupGallery static method

bool openPopupGallery(
  1. ChatId chatId, {
  2. String? id,
  3. int? index,
})

Opens a new popup window at the Routes.gallery page with the provided chatId.

Implementation

static bool openPopupGallery(ChatId chatId, {String? id, int? index}) {
  final int screenW = web.window.screen.width;
  final int screenH = web.window.screen.height;

  final Rect? prefs = getGalleryRect();

  final width = min(prefs?.width ?? 500, screenW);
  final height = min(prefs?.height ?? 500, screenH);

  var left = prefs?.left ?? screenW - 50 - width;
  if (left < 0) {
    left = 0;
  } else if (left + width > screenW) {
    left = screenW - width;
  }

  var top = prefs?.top ?? 50;
  if (top < 0) {
    top = 0;
  } else if (top + height > screenH) {
    top = screenH.toDouble() - height;
  }

  final List<String> parameters = [
    if (id != null) 'id=$id',
    if (index != null) 'index=$index',
  ];

  final String query = parameters.isEmpty ? '' : '?${parameters.join('&')}';

  final web.Window? window = web.window.open(
    '${Routes.gallery}/$chatId$query',
    'gallery_${const Uuid().v4()}',
    'popup=1,width=$width,height=$height,left=$left,top=$top',
  );

  try {
    return window?.closed == false;
  } catch (_) {
    return false;
  }
}