Files
TPSchedule/mobile/lib/features/school/school_navigation_policy.dart
T

23 lines
848 B
Dart

class SchoolNavigationPolicy {
static bool canNavigate(Uri uri, {required bool isMainFrame}) => isMainFrame
? isSchoolPage(uri)
: (uri.scheme == 'https' && uri.userInfo.isEmpty) ||
(uri.scheme == 'about' && uri.path == 'blank');
static bool _https(Uri uri) =>
uri.scheme == 'https' && uri.port == 443 && uri.userInfo.isEmpty;
static bool canInjectCredentials(Uri uri) =>
_https(uri) &&
uri.host == 'idas.uestc.edu.cn' &&
uri.path == '/authserver/login';
static bool isTimetable(Uri uri) =>
_https(uri) &&
uri.host == 'yjsjy.uestc.edu.cn' &&
RegExp(
r'^/pyxx/pygl/xskbcx/index/[1-9]\d*'
r'$',
).hasMatch(uri.path);
static bool isSchoolPage(Uri uri) =>
_https(uri) &&
const {'idas.uestc.edu.cn', 'yjsjy.uestc.edu.cn'}.contains(uri.host);
}