<!-- 用户协议 -->
<template>
  <div class="user-agreement">
    <n-h1 class="title">用户协议</n-h1>
    <n-scrollbar class="scrollbar">
      <n-flex class="date" justify="center">
        <n-tag round>生效日期：2024 年 7 月 16 日</n-tag>
        <n-tag type="warning" round>更新日期：2024 年 9 月 28 日</n-tag>
      </n-flex>
      <n-p>
        欢迎使用 SPlayer（以下简称“本软件”）。本软件是一个本地音乐播放软件，可能会调用第三方 API
        来增强其功能。请在使用本软件前仔细阅读本用户协议。本协议是您（以下简称“用户”）与 SPlayer
        开发团队（以下简称“开发者”）之间的法律协议。一旦您下载、安装或使用本软件，即表示您同意接受本协议的所有条款和条件。
      </n-p>
      <n-h3 prefix="bar"> 软件使用 </n-h3>
      <n-ol>
        <n-li>本软件是一款本地音乐播放软件，允许用户播放存储在设备上的音频文件。</n-li>
        <n-li>开发者保留随时修改、更新或终止软件及其功能的权利，而无需提前通知用户。</n-li>
        <n-li>用户必须年满 18 岁或在父母或监护人的监督下使用本软件。</n-li>
      </n-ol>
      <n-h3 prefix="bar"> 开源许可 </n-h3>
      <n-ol>
        <n-li>本软件是基于 AGPL-3.0 许可发布的开源软件。</n-li>
        <n-li>用户在使用、修改和分发 SPlayer 时，必须遵守 AGPL-3.0 许可的条款和条件。</n-li>
        <n-li>
          AGPL-3.0 许可的详细信息可以在以下链接找到：
          <n-a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank">
            GNU Affero General Public License v3.0
          </n-a>
        </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 第三方 </n-h3>
      <n-ol>
        <n-li>本软件可能会调用第三方 API 以提供额外功能（例如，歌词显示、专辑封面获取等）。</n-li>
        <n-li>
          开发者不对第三方 API 的准确性、完整性或合法性负责。用户使用第三方 API
          时，应遵守第三方提供商的服务条款和隐私政策。
        </n-li>
        <n-li>由于第三方 API 引起的任何问题或纠纷，开发者不承担任何责任。</n-li>
      </n-ol>
      <n-h3 prefix="bar"> 用户责任 </n-h3>
      <n-ol>
        <n-li>
          用户应遵守所有适用的法律法规，确保通过合法手段获取音乐文件，并在使用本软件时不侵犯任何第三方的版权或其他合法权益。
        </n-li>
        <n-li>
          用户不得使用本软件进行任何非法活动，包括但不限于侵犯版权、传播恶意软件、非法获取数据等。
        </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 知识产权 </n-h3>
      <n-ol>
        <n-li>
          除了根据 AGPL-3.0
          许可使用的开源部分外，本软件及其所有内容（包括但不限于软件、标识、图形、用户界面、脚本和服务名称）均为开发者或其许可方的财产，受知识产权法保护。
        </n-li>
        <n-li> 未经开发者书面许可，用户不得复制、修改、分发、出售或租赁本软件及其内容。 </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 免责声明 </n-h3>
      <n-ol>
        <n-li>
          本软件按“现状”提供，不提供任何形式的明示或暗示保证，包括但不限于适销性、特定用途适用性和非侵权性。
        </n-li>
        <n-li>
          开发者不保证本软件的功能不会中断或无错误，也不保证本软件适用于用户的特定需求。
        </n-li>
        <n-li> 用户使用本软件过程中产生的任何直接或间接损失，开发者不承担任何责任。 </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 责任限制 </n-h3>
      <n-ol>
        <n-li>
          在适用法律允许的最大范围内，开发者对因使用或无法使用本软件而导致的任何间接、偶然、特殊、继发或惩罚性损害不承担责任，即使开发者已被告知此类损害的可能性。
        </n-li>
        <n-li>
          在任何情况下，开发者对用户的全部责任，不论是合同、侵权（包括过失）或其他方面的责任，总额不超过用户为使用本软件所支付的费用（如果有）。
        </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 终止 </n-h3>
      <n-ol>
        <n-li> 开发者有权在不提前通知的情况下，因任何原因或无原因终止本协议。 </n-li>
        <n-li> 本协议终止后，用户应停止使用本软件并删除其所有副本。 </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 隐私政策 </n-h3>
      <n-ol>
        <n-li> 本软件可能会收集和使用用户的某些信息，以提供和改进软件服务。 </n-li>
        <n-li>
          开发者承诺保护用户的隐私，不会将用户信息出售给第三方。详细的隐私政策请参考我们的隐私声明。
        </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 更新与变更 </n-h3>
      <n-ol>
        <n-li> 开发者保留随时更新和修改本协议的权利。 </n-li>
        <n-li>
          更新后的协议将通过适当的方式通知用户，包括但不限于在本软件中发布或通过电子邮件发送通知。
        </n-li>
      </n-ol>
      <n-h3 prefix="bar"> 其他 </n-h3>
      <n-ol>
        <n-li> 本协议受中华人民共和国法律管辖，不考虑其法律冲突条款。</n-li>
        <n-li>
          如果本协议的任何条款被视为无效或不可执行，该条款将被修改以反映双方的意图，其余条款仍然完全有效。
        </n-li>
        <n-li>
          本协议构成您与开发者之间关于使用本软件的完整协议，并取代之前的所有口头或书面协议和陈述。
        </n-li>
      </n-ol>
      <n-card ref="readOverRef">
        若你（使用者）接受以上协议，请点击下面的“同意并使用”按钮签署本协议，若不接受，请点击“不同意”后软件将退出并清除本软件的所有数据。
      </n-card>
    </n-scrollbar>
    <n-flex justify="center">
      <n-button v-if="isElectron" type="error" @click="closeApp">不同意</n-button>
      <n-button type="success" @click="emit('close')" :disabled="!isReadOver">
        {{ isReadOver ? "同意并使用" : "请先完整阅读" }}
      </n-button>
    </n-flex>
  </div>
</template>

<script setup lang="ts">
import { isElectron } from "@/utils/helper";

const emit = defineEmits<{
  close: [];
}>();

const readOverRef = ref<HTMLElement | null>(null);

// 是否阅读完毕
const isReadOver = useElementVisibility(readOverRef);

// 关闭软件
const closeApp = () => {
  window.electron.ipcRenderer.send("win-close");
};
</script>

<style lang="scss" scoped>
.user-agreement {
  :deep(.scrollbar) {
    max-height: 60vh;
    margin-bottom: 20px;
    .n-scrollbar-content {
      overflow: hidden;
      padding-right: 12px;
    }
  }
  .title {
    text-align: center;
  }
  .n-p {
    font-size: 16px;
    text-indent: 2em;
  }
  .n-ol {
    font-size: 16px;
  }
  .n-card {
    --n-font-size: 18px;
    --n-border-radius: 12px;
    margin-top: 20px;
    margin-bottom: 20px;
  }
}
</style>
