<!DOCTYPE html>
<!--
Copyright 2020 The Cobalt Authors. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>
<meta charset="utf-8">
<title>tmsabi</title>
<script>
  var changeChannel = setInterval(tryChangeChannel, 500);

  function tryChangeChannel() {
    const channel = window.h5vcc.updater.getUpdaterChannel();
    const status = window.h5vcc.updater.getUpdateStatus();

    if (channel == "") {
      return;
    }

    if (channel == "qa") {
      if ((status == "App is up to date") || (status == "Update installed, pending restart")) {
        window.h5vcc.updater.setUpdaterChannel("tmsabi");
        console.log("channel was changed to tmsabi");
        return;
      }
    }

    if ((channel == "tmsabi") && (status == "Update installed, pending restart")) {
      console.log("update from tmsabi channel installed");
      clearInterval(changeChannel);
    }
  }
</script>
</html>
