logout method

  1. @override
Future<LogoutResponse> logout()
override

Performs a logout in shadertoy website

Upon success error is null

In case of error the error field has the corresponding ResponseError structure

Implementation

@override
Future<LogoutResponse> logout() {
  if (options.supportsCookies) {
    return loggedIn.then((isLoggedIn) {
      if (isLoggedIn) {
        var clientOptions = Options(
            headers: {HttpHeaders.refererHeader: context.baseUrl},
            followRedirects: false,
            validateStatus: (int? status) => status == 302);
        return catchDioError<LogoutResponse>(
            client
                .get('/${ShadertoyContext.signOutPath}',
                    options: clientOptions)
                .then((Response<dynamic> response) {
              clearCookies();
              return LogoutResponse();
            }),
            (de) => LogoutResponse(
                error: toResponseError(de)
                    .copyWith(context: contextUser, target: options.user)));
      }

      return Future.value(LogoutResponse());
    });
  } else {
    return Future.value(LogoutResponse());
  }
}