From db5fc63c7d2a87012e66c1037f52b44e685e2956 Mon Sep 17 00:00:00 2001 From: czy0729 <402731062@qq.com> Date: Thu, 5 Sep 2019 10:31:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=A8=A1=E5=9D=97=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B,=20=E5=AF=B9=E9=A1=B5=E9=9D=A2=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=BA=86=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- constants/api.js | 8 +- constants/index.js | 52 ++--- navigations.js | 2 +- screens/{ => discovery}/anitama/index.js | 0 screens/{ => discovery}/anitama/store.js | 0 screens/{ => discovery}/award/index.js | 0 screens/{ => discovery}/award/reset-style.js | 0 .../{ => discovery}/award/static-html/2010.js | 0 .../{ => discovery}/award/static-html/2011.js | 0 .../{ => discovery}/award/static-html/2012.js | 0 .../{ => discovery}/award/static-html/2013.js | 0 .../{ => discovery}/award/static-html/2014.js | 0 .../{ => discovery}/award/static-html/2015.js | 0 .../{ => discovery}/award/static-html/2016.js | 0 .../{ => discovery}/award/static-html/2017.js | 0 .../{ => discovery}/award/static-html/2018.js | 0 .../award/static-html/index.js | 0 screens/{ => discovery}/award/utils.js | 0 screens/{ => discovery}/calendar/index.js | 0 screens/{ => discovery}/calendar/item.js | 0 screens/{ => discovery}/calendar/list.js | 0 screens/{ => discovery}/calendar/store.js | 0 screens/discovery/{ => index}/award.js | 0 screens/discovery/{ => index}/header.js | 0 screens/discovery/{ => index}/index.js | 0 screens/discovery/{ => index}/list.js | 0 screens/discovery/{ => index}/section.js | 0 screens/discovery/{ => index}/section2.js | 0 screens/discovery/{ => index}/store.js | 0 screens/{ => discovery}/random/index.js | 0 screens/{ => discovery}/random/item.js | 0 screens/{ => discovery}/random/list.js | 0 screens/{ => discovery}/random/store.js | 0 screens/{ => discovery}/rank/index.js | 0 screens/{ => discovery}/rank/list.js | 0 screens/{ => discovery}/rank/store.js | 0 screens/{ => discovery}/rank/tool-bar.js | 0 screens/{ => discovery}/search/category.js | 0 screens/{ => discovery}/search/history.js | 0 screens/{ => discovery}/search/index.js | 0 screens/{ => discovery}/search/list.js | 0 screens/{ => discovery}/search/search-bar.js | 0 screens/{ => discovery}/search/store.js | 0 screens/home/{ => index}/index.js | 4 +- screens/home/{ => index}/item.js | 0 screens/home/{ => index}/list.js | 0 screens/home/{ => index}/store.js | 0 screens/home/{ => index}/tabs.js | 0 screens/{ => home}/mono/index.js | 0 screens/{ => home}/mono/info.js | 0 screens/{ => home}/mono/jobs.js | 0 screens/{ => home}/mono/store.js | 0 screens/{ => home}/mono/voice.js | 0 screens/{ => home}/mono/works.js | 0 screens/{ => home}/subject/blog.js | 0 screens/{ => home}/subject/book-ep.js | 0 screens/{ => home}/subject/box.js | 0 screens/{ => home}/subject/character.js | 0 screens/{ => home}/subject/comic.js | 0 screens/{ => home}/subject/cover.js | 0 screens/{ => home}/subject/disc.js | 0 screens/{ => home}/subject/ep.js | 0 screens/{ => home}/subject/head.js | 0 screens/{ => home}/subject/header.js | 0 screens/{ => home}/subject/index.js | 0 screens/{ => home}/subject/info.js | 0 screens/{ => home}/subject/like.js | 0 screens/{ => home}/subject/rating.js | 0 screens/{ => home}/subject/recent.js | 0 screens/{ => home}/subject/relations.js | 0 screens/{ => home}/subject/staff.js | 0 screens/{ => home}/subject/store.js | 0 screens/{ => home}/subject/summary.js | 0 screens/{ => home}/subject/tags.js | 0 screens/{ => home}/subject/topic.js | 0 screens/{ => home}/tag/index.js | 0 screens/{ => home}/tag/list.js | 0 screens/{ => home}/tag/store.js | 0 screens/{ => home}/tag/tool-bar.js | 0 screens/{ => home}/video/index.js | 0 screens/index.js | 70 ++++--- .../{login-assist => login/assist}/index.js | 0 screens/{ => login}/auth/index.js | 0 screens/login/{ => index}/index.js | 0 screens/{login-v2 => login/v2}/auth.js | 0 screens/{login-v2 => login/v2}/form.js | 0 screens/{login-v2 => login/v2}/index.js | 0 screens/{login-v2 => login/v2}/preview.js | 0 screens/{ => rakuen}/group/index.js | 0 screens/{ => rakuen}/group/info.js | 0 screens/{ => rakuen}/group/list.js | 0 screens/{ => rakuen}/group/store.js | 0 screens/rakuen/{ => index}/index.js | 0 screens/rakuen/{ => index}/item.js | 0 screens/rakuen/{ => index}/list.js | 0 screens/rakuen/{ => index}/notify.js | 0 screens/rakuen/{ => index}/store.js | 0 screens/rakuen/{ => index}/tabs.js | 0 screens/{ => rakuen}/notify/index.js | 0 screens/{ => rakuen}/notify/store.js | 0 .../setting}/history.js | 4 +- .../setting}/index.js | 4 +- screens/{ => rakuen}/topic/index.js | 0 screens/{ => rakuen}/topic/item.js | 0 screens/{ => rakuen}/topic/section-title.js | 0 screens/{ => rakuen}/topic/store.js | 0 screens/{ => rakuen}/topic/top.js | 0 screens/{ => rakuen}/ugc-agree/index.js | 0 screens/tinygrail/index/auth.js | 27 +++ screens/tinygrail/index/award.js | 113 ---------- screens/tinygrail/index/header.js | 37 ---- screens/tinygrail/index/index.js | 42 ++-- screens/tinygrail/index/list.js | 198 ------------------ screens/tinygrail/index/section.js | 101 --------- screens/tinygrail/index/section2.js | 87 -------- screens/tinygrail/index/store.js | 138 +++++++----- screens/tinygrail/search/index.js | 4 +- screens/tinygrail/trade/index.js | 5 +- screens/{ => user}/friends/index.js | 0 screens/{ => user}/friends/store.js | 0 screens/user/{ => index}/head.js | 0 screens/user/{ => index}/index.js | 0 screens/user/{ => index}/list.js | 0 screens/user/{ => index}/parallax-image.js | 0 screens/user/{ => index}/store.js | 0 screens/user/{ => index}/tab-bar-left.js | 0 screens/user/{ => index}/tabs.js | 0 screens/user/{ => index}/tool-bar.js | 0 screens/{ => user}/setting/index.js | 0 screens/{ => user}/zone/about.js | 0 screens/{ => user}/zone/bangumi-list.js | 0 screens/{ => user}/zone/head.js | 0 screens/{ => user}/zone/index.js | 0 screens/{ => user}/zone/parallax-image.js | 0 screens/{ => user}/zone/store.js | 0 screens/{ => user}/zone/tabs.js | 0 screens/{ => user}/zone/timeline-list.js | 0 137 files changed, 209 insertions(+), 687 deletions(-) rename screens/{ => discovery}/anitama/index.js (100%) rename screens/{ => discovery}/anitama/store.js (100%) rename screens/{ => discovery}/award/index.js (100%) rename screens/{ => discovery}/award/reset-style.js (100%) rename screens/{ => discovery}/award/static-html/2010.js (100%) rename screens/{ => discovery}/award/static-html/2011.js (100%) rename screens/{ => discovery}/award/static-html/2012.js (100%) rename screens/{ => discovery}/award/static-html/2013.js (100%) rename screens/{ => discovery}/award/static-html/2014.js (100%) rename screens/{ => discovery}/award/static-html/2015.js (100%) rename screens/{ => discovery}/award/static-html/2016.js (100%) rename screens/{ => discovery}/award/static-html/2017.js (100%) rename screens/{ => discovery}/award/static-html/2018.js (100%) rename screens/{ => discovery}/award/static-html/index.js (100%) rename screens/{ => discovery}/award/utils.js (100%) rename screens/{ => discovery}/calendar/index.js (100%) rename screens/{ => discovery}/calendar/item.js (100%) rename screens/{ => discovery}/calendar/list.js (100%) rename screens/{ => discovery}/calendar/store.js (100%) rename screens/discovery/{ => index}/award.js (100%) rename screens/discovery/{ => index}/header.js (100%) rename screens/discovery/{ => index}/index.js (100%) rename screens/discovery/{ => index}/list.js (100%) rename screens/discovery/{ => index}/section.js (100%) rename screens/discovery/{ => index}/section2.js (100%) rename screens/discovery/{ => index}/store.js (100%) rename screens/{ => discovery}/random/index.js (100%) rename screens/{ => discovery}/random/item.js (100%) rename screens/{ => discovery}/random/list.js (100%) rename screens/{ => discovery}/random/store.js (100%) rename screens/{ => discovery}/rank/index.js (100%) rename screens/{ => discovery}/rank/list.js (100%) rename screens/{ => discovery}/rank/store.js (100%) rename screens/{ => discovery}/rank/tool-bar.js (100%) rename screens/{ => discovery}/search/category.js (100%) rename screens/{ => discovery}/search/history.js (100%) rename screens/{ => discovery}/search/index.js (100%) rename screens/{ => discovery}/search/list.js (100%) rename screens/{ => discovery}/search/search-bar.js (100%) rename screens/{ => discovery}/search/store.js (100%) rename screens/home/{ => index}/index.js (96%) rename screens/home/{ => index}/item.js (100%) rename screens/home/{ => index}/list.js (100%) rename screens/home/{ => index}/store.js (100%) rename screens/home/{ => index}/tabs.js (100%) rename screens/{ => home}/mono/index.js (100%) rename screens/{ => home}/mono/info.js (100%) rename screens/{ => home}/mono/jobs.js (100%) rename screens/{ => home}/mono/store.js (100%) rename screens/{ => home}/mono/voice.js (100%) rename screens/{ => home}/mono/works.js (100%) rename screens/{ => home}/subject/blog.js (100%) rename screens/{ => home}/subject/book-ep.js (100%) rename screens/{ => home}/subject/box.js (100%) rename screens/{ => home}/subject/character.js (100%) rename screens/{ => home}/subject/comic.js (100%) rename screens/{ => home}/subject/cover.js (100%) rename screens/{ => home}/subject/disc.js (100%) rename screens/{ => home}/subject/ep.js (100%) rename screens/{ => home}/subject/head.js (100%) rename screens/{ => home}/subject/header.js (100%) rename screens/{ => home}/subject/index.js (100%) rename screens/{ => home}/subject/info.js (100%) rename screens/{ => home}/subject/like.js (100%) rename screens/{ => home}/subject/rating.js (100%) rename screens/{ => home}/subject/recent.js (100%) rename screens/{ => home}/subject/relations.js (100%) rename screens/{ => home}/subject/staff.js (100%) rename screens/{ => home}/subject/store.js (100%) rename screens/{ => home}/subject/summary.js (100%) rename screens/{ => home}/subject/tags.js (100%) rename screens/{ => home}/subject/topic.js (100%) rename screens/{ => home}/tag/index.js (100%) rename screens/{ => home}/tag/list.js (100%) rename screens/{ => home}/tag/store.js (100%) rename screens/{ => home}/tag/tool-bar.js (100%) rename screens/{ => home}/video/index.js (100%) rename screens/{login-assist => login/assist}/index.js (100%) rename screens/{ => login}/auth/index.js (100%) rename screens/login/{ => index}/index.js (100%) rename screens/{login-v2 => login/v2}/auth.js (100%) rename screens/{login-v2 => login/v2}/form.js (100%) rename screens/{login-v2 => login/v2}/index.js (100%) rename screens/{login-v2 => login/v2}/preview.js (100%) rename screens/{ => rakuen}/group/index.js (100%) rename screens/{ => rakuen}/group/info.js (100%) rename screens/{ => rakuen}/group/list.js (100%) rename screens/{ => rakuen}/group/store.js (100%) rename screens/rakuen/{ => index}/index.js (100%) rename screens/rakuen/{ => index}/item.js (100%) rename screens/rakuen/{ => index}/list.js (100%) rename screens/rakuen/{ => index}/notify.js (100%) rename screens/rakuen/{ => index}/store.js (100%) rename screens/rakuen/{ => index}/tabs.js (100%) rename screens/{ => rakuen}/notify/index.js (100%) rename screens/{ => rakuen}/notify/store.js (100%) rename screens/{rakuen-setting => rakuen/setting}/history.js (94%) rename screens/{rakuen-setting => rakuen/setting}/index.js (96%) rename screens/{ => rakuen}/topic/index.js (100%) rename screens/{ => rakuen}/topic/item.js (100%) rename screens/{ => rakuen}/topic/section-title.js (100%) rename screens/{ => rakuen}/topic/store.js (100%) rename screens/{ => rakuen}/topic/top.js (100%) rename screens/{ => rakuen}/ugc-agree/index.js (100%) create mode 100644 screens/tinygrail/index/auth.js delete mode 100644 screens/tinygrail/index/award.js delete mode 100644 screens/tinygrail/index/header.js delete mode 100644 screens/tinygrail/index/list.js delete mode 100644 screens/tinygrail/index/section.js delete mode 100644 screens/tinygrail/index/section2.js rename screens/{ => user}/friends/index.js (100%) rename screens/{ => user}/friends/store.js (100%) rename screens/user/{ => index}/head.js (100%) rename screens/user/{ => index}/index.js (100%) rename screens/user/{ => index}/list.js (100%) rename screens/user/{ => index}/parallax-image.js (100%) rename screens/user/{ => index}/store.js (100%) rename screens/user/{ => index}/tab-bar-left.js (100%) rename screens/user/{ => index}/tabs.js (100%) rename screens/user/{ => index}/tool-bar.js (100%) rename screens/{ => user}/setting/index.js (100%) rename screens/{ => user}/zone/about.js (100%) rename screens/{ => user}/zone/bangumi-list.js (100%) rename screens/{ => user}/zone/head.js (100%) rename screens/{ => user}/zone/index.js (100%) rename screens/{ => user}/zone/parallax-image.js (100%) rename screens/{ => user}/zone/store.js (100%) rename screens/{ => user}/zone/tabs.js (100%) rename screens/{ => user}/zone/timeline-list.js (100%) diff --git a/constants/api.js b/constants/api.js index a99836539..7ac123242 100644 --- a/constants/api.js +++ b/constants/api.js @@ -3,7 +3,7 @@ * @Author: czy0729 * @Date: 2019-02-21 21:30:44 * @Last Modified by: czy0729 - * @Last Modified time: 2019-09-03 22:15:34 + * @Last Modified time: 2019-09-04 21:35:13 */ import { HOST_NAME } from './index' @@ -212,3 +212,9 @@ export const API_TINYGRAIL_CHARA = (monoId = 0) => */ export const API_TINYGRAIL_DEPTH = monoId => `${API_HOST_TINYGRAIL}/api/chara/depth/${monoId}` + +/** + * 资产信息 + */ +export const API_TINYGRAIL_ASSETS = () => + `${API_HOST_TINYGRAIL}/api/chara/user/assets` diff --git a/constants/index.js b/constants/index.js index ab988869f..8ace9b6c8 100644 --- a/constants/index.js +++ b/constants/index.js @@ -3,49 +3,50 @@ * @Author: czy0729 * @Date: 2019-02-22 01:25:31 * @Last Modified by: czy0729 - * @Last Modified time: 2019-09-03 22:26:09 + * @Last Modified time: 2019-09-04 22:15:27 */ import { Platform } from 'react-native' import Constants from 'expo-constants' -export const IOS = Platform.OS === 'ios' -export const MI = Constants.deviceName.includes('MI') // 小米MIUI +export const IOS = Platform.OS === 'ios' // 是否iOS +export const MI = Constants.deviceName.includes('MI') // 是否MIUI (假如不是小米手机刷了MIUI会检测不到) // APP -export const APP_ID = 'bgm8885c4d524cd61fc' -export const APP_SECRET = '1da52e7834bbb73cca90302f9ddbc8dd' +export const APP_ID = 'bgm8885c4d524cd61fc' // client_id +export const APP_SECRET = '1da52e7834bbb73cca90302f9ddbc8dd' // client_secret + +// TINYGRAIL +export const TINYGRAIL_APP_ID = 'bgm2525b0e4c7d93fec' // 小圣杯 client_id +export const TINYGRAIL_OAUTH_REDIRECT_URL = 'https://www.tinygrail.com/cb' // 小圣杯 授权跳转地址 // URL -export const HOST_NAME = 'bgm.tv' +export const HOST_NAME = 'bgm.tv' // 域名 export const HOST = `https://${HOST_NAME}` -export const HOST_2 = 'https://bangumi.tv' -export const HOST_MIRRO = 'https://mirror.bgm.rin.cat' -export const OAUTH_URL = `${HOST}/oauth/authorize` -export const OAUTH_REDIRECT_URL = `${HOST}/dev/app` -export const NING_MOE_HOST = 'https://www.ningmoe.com' -export const ANITAMA_HOST = 'https://app.anitama.net/' +export const HOST_2 = 'https://bangumi.tv' // 备用域名 +export const OAUTH_URL = `${HOST}/oauth/authorize` // 登陆v1.0 oauth地址 +export const OAUTH_REDIRECT_URL = `${HOST}/dev/app` // 登陆v1.0 授权跳转地址 +export const NING_MOE_HOST = 'https://www.ningmoe.com' // 柠萌瞬间地址 +export const ANITAMA_HOST = 'https://app.anitama.net/' // Anitama api地址 // GITHUB -export const FEEDBACK_URL = `${HOST}/group/topic/350677` -export const GITHUB_URL = 'https://github.com/czy0729/Bangumi' -export const GITHUB_RELEASE_URL = `${GITHUB_URL}/releases` +export const FEEDBACK_URL = `${HOST}/group/topic/350677` // 反馈地址 +export const GITHUB_URL = 'https://github.com/czy0729/Bangumi' // github地址 +export const GITHUB_RELEASE_URL = `${GITHUB_URL}/releases` // 版本析出地址 export const GITHUB_RELEASE_REPOS_URL = - 'https://api.github.com/repos/czy0729/Bangumi/releases' -export const GITHUB_RELEASE_VERSION = '0.14.0' -export const CODE_PUSH_VERSION = '' -export const DEV = false + 'https://api.github.com/repos/czy0729/Bangumi/releases' // 版本析出api地址 +export const GITHUB_RELEASE_VERSION = '0.14.0' // 版本号 +export const CODE_PUSH_VERSION = '' // 热推送副版本号 +export const DEV = true // 是否开发模式 // 图片 -export const IMG_DEFAULT_AVATAR = '//lain.bgm.tv/pic/user/s/icon.jpg' - -// 白 +export const IMG_DEFAULT_AVATAR = '//lain.bgm.tv/pic/user/s/icon.jpg' // 空头像 export const IMG_EMPTY = { uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWP4////GQAJyAPKSOz6nwAAAABJRU5ErkJggg==' -} +} // 白底1*1图片 -export const IMG_DEFAULT = require('@assets/images/default.png') -export const IMG_ERROR = require('@assets/images/icon/pic-error-defult.png') +export const IMG_DEFAULT = require('@assets/images/default.png') // 默认图 +export const IMG_ERROR = require('@assets/images/icon/pic-error-defult.png') // 图裂图 // 全局统一列表数据结构 export const LIST_EMPTY = { @@ -63,6 +64,7 @@ export const LIST_LIMIT = 40 // 用于制造分页数据 export const LIST_COMMENTS_LIMIT = 25 export const TOPIC_PUSH_LIMIT = 300 // 对评论大于300的帖子进行网页跳转 +// 时间数组 export const airtimeData = [ '全部', '2020', diff --git a/navigations.js b/navigations.js index a8c2f5f46..f0b2eb0ed 100644 --- a/navigations.js +++ b/navigations.js @@ -2,7 +2,7 @@ * @Author: czy0729 * @Date: 2019-06-02 14:42:28 * @Last Modified by: czy0729 - * @Last Modified time: 2019-09-03 22:12:35 + * @Last Modified time: 2019-09-04 22:27:16 */ export default { initialRouteName: 'HomeTab', // HomeTab TinygrailOverview TinygrailTrade diff --git a/screens/anitama/index.js b/screens/discovery/anitama/index.js similarity index 100% rename from screens/anitama/index.js rename to screens/discovery/anitama/index.js diff --git a/screens/anitama/store.js b/screens/discovery/anitama/store.js similarity index 100% rename from screens/anitama/store.js rename to screens/discovery/anitama/store.js diff --git a/screens/award/index.js b/screens/discovery/award/index.js similarity index 100% rename from screens/award/index.js rename to screens/discovery/award/index.js diff --git a/screens/award/reset-style.js b/screens/discovery/award/reset-style.js similarity index 100% rename from screens/award/reset-style.js rename to screens/discovery/award/reset-style.js diff --git a/screens/award/static-html/2010.js b/screens/discovery/award/static-html/2010.js similarity index 100% rename from screens/award/static-html/2010.js rename to screens/discovery/award/static-html/2010.js diff --git a/screens/award/static-html/2011.js b/screens/discovery/award/static-html/2011.js similarity index 100% rename from screens/award/static-html/2011.js rename to screens/discovery/award/static-html/2011.js diff --git a/screens/award/static-html/2012.js b/screens/discovery/award/static-html/2012.js similarity index 100% rename from screens/award/static-html/2012.js rename to screens/discovery/award/static-html/2012.js diff --git a/screens/award/static-html/2013.js b/screens/discovery/award/static-html/2013.js similarity index 100% rename from screens/award/static-html/2013.js rename to screens/discovery/award/static-html/2013.js diff --git a/screens/award/static-html/2014.js b/screens/discovery/award/static-html/2014.js similarity index 100% rename from screens/award/static-html/2014.js rename to screens/discovery/award/static-html/2014.js diff --git a/screens/award/static-html/2015.js b/screens/discovery/award/static-html/2015.js similarity index 100% rename from screens/award/static-html/2015.js rename to screens/discovery/award/static-html/2015.js diff --git a/screens/award/static-html/2016.js b/screens/discovery/award/static-html/2016.js similarity index 100% rename from screens/award/static-html/2016.js rename to screens/discovery/award/static-html/2016.js diff --git a/screens/award/static-html/2017.js b/screens/discovery/award/static-html/2017.js similarity index 100% rename from screens/award/static-html/2017.js rename to screens/discovery/award/static-html/2017.js diff --git a/screens/award/static-html/2018.js b/screens/discovery/award/static-html/2018.js similarity index 100% rename from screens/award/static-html/2018.js rename to screens/discovery/award/static-html/2018.js diff --git a/screens/award/static-html/index.js b/screens/discovery/award/static-html/index.js similarity index 100% rename from screens/award/static-html/index.js rename to screens/discovery/award/static-html/index.js diff --git a/screens/award/utils.js b/screens/discovery/award/utils.js similarity index 100% rename from screens/award/utils.js rename to screens/discovery/award/utils.js diff --git a/screens/calendar/index.js b/screens/discovery/calendar/index.js similarity index 100% rename from screens/calendar/index.js rename to screens/discovery/calendar/index.js diff --git a/screens/calendar/item.js b/screens/discovery/calendar/item.js similarity index 100% rename from screens/calendar/item.js rename to screens/discovery/calendar/item.js diff --git a/screens/calendar/list.js b/screens/discovery/calendar/list.js similarity index 100% rename from screens/calendar/list.js rename to screens/discovery/calendar/list.js diff --git a/screens/calendar/store.js b/screens/discovery/calendar/store.js similarity index 100% rename from screens/calendar/store.js rename to screens/discovery/calendar/store.js diff --git a/screens/discovery/award.js b/screens/discovery/index/award.js similarity index 100% rename from screens/discovery/award.js rename to screens/discovery/index/award.js diff --git a/screens/discovery/header.js b/screens/discovery/index/header.js similarity index 100% rename from screens/discovery/header.js rename to screens/discovery/index/header.js diff --git a/screens/discovery/index.js b/screens/discovery/index/index.js similarity index 100% rename from screens/discovery/index.js rename to screens/discovery/index/index.js diff --git a/screens/discovery/list.js b/screens/discovery/index/list.js similarity index 100% rename from screens/discovery/list.js rename to screens/discovery/index/list.js diff --git a/screens/discovery/section.js b/screens/discovery/index/section.js similarity index 100% rename from screens/discovery/section.js rename to screens/discovery/index/section.js diff --git a/screens/discovery/section2.js b/screens/discovery/index/section2.js similarity index 100% rename from screens/discovery/section2.js rename to screens/discovery/index/section2.js diff --git a/screens/discovery/store.js b/screens/discovery/index/store.js similarity index 100% rename from screens/discovery/store.js rename to screens/discovery/index/store.js diff --git a/screens/random/index.js b/screens/discovery/random/index.js similarity index 100% rename from screens/random/index.js rename to screens/discovery/random/index.js diff --git a/screens/random/item.js b/screens/discovery/random/item.js similarity index 100% rename from screens/random/item.js rename to screens/discovery/random/item.js diff --git a/screens/random/list.js b/screens/discovery/random/list.js similarity index 100% rename from screens/random/list.js rename to screens/discovery/random/list.js diff --git a/screens/random/store.js b/screens/discovery/random/store.js similarity index 100% rename from screens/random/store.js rename to screens/discovery/random/store.js diff --git a/screens/rank/index.js b/screens/discovery/rank/index.js similarity index 100% rename from screens/rank/index.js rename to screens/discovery/rank/index.js diff --git a/screens/rank/list.js b/screens/discovery/rank/list.js similarity index 100% rename from screens/rank/list.js rename to screens/discovery/rank/list.js diff --git a/screens/rank/store.js b/screens/discovery/rank/store.js similarity index 100% rename from screens/rank/store.js rename to screens/discovery/rank/store.js diff --git a/screens/rank/tool-bar.js b/screens/discovery/rank/tool-bar.js similarity index 100% rename from screens/rank/tool-bar.js rename to screens/discovery/rank/tool-bar.js diff --git a/screens/search/category.js b/screens/discovery/search/category.js similarity index 100% rename from screens/search/category.js rename to screens/discovery/search/category.js diff --git a/screens/search/history.js b/screens/discovery/search/history.js similarity index 100% rename from screens/search/history.js rename to screens/discovery/search/history.js diff --git a/screens/search/index.js b/screens/discovery/search/index.js similarity index 100% rename from screens/search/index.js rename to screens/discovery/search/index.js diff --git a/screens/search/list.js b/screens/discovery/search/list.js similarity index 100% rename from screens/search/list.js rename to screens/discovery/search/list.js diff --git a/screens/search/search-bar.js b/screens/discovery/search/search-bar.js similarity index 100% rename from screens/search/search-bar.js rename to screens/discovery/search/search-bar.js diff --git a/screens/search/store.js b/screens/discovery/search/store.js similarity index 100% rename from screens/search/store.js rename to screens/discovery/search/store.js diff --git a/screens/home/index.js b/screens/home/index/index.js similarity index 96% rename from screens/home/index.js rename to screens/home/index/index.js index e3b04d662..eb21077a4 100644 --- a/screens/home/index.js +++ b/screens/home/index/index.js @@ -2,7 +2,7 @@ * @Author: czy0729 * @Date: 2019-03-13 08:34:37 * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-31 14:59:55 + * @Last Modified time: 2019-09-04 22:27:09 */ import React from 'react' import { NavigationEvents, SafeAreaView } from 'react-navigation' @@ -36,7 +36,7 @@ class Home extends React.Component { navigation.push('TinygrailOverview')} + onPress={() => navigation.push('Tinygrail')} /> { +function History({ style, data, onDelete }) { if (!data.length) { return ( diff --git a/screens/rakuen-setting/index.js b/screens/rakuen/setting/index.js similarity index 96% rename from screens/rakuen-setting/index.js rename to screens/rakuen/setting/index.js index 3058705c5..02ecb1fec 100644 --- a/screens/rakuen-setting/index.js +++ b/screens/rakuen/setting/index.js @@ -2,7 +2,7 @@ * @Author: czy0729 * @Date: 2019-07-14 14:12:35 * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-26 11:10:44 + * @Last Modified time: 2019-09-05 10:20:37 */ import React from 'react' import { ScrollView } from 'react-native' @@ -20,7 +20,7 @@ const title = '超展开设置' export default @withHeader() @observer -class Setting extends React.Component { +class RakuenSetting extends React.Component { static navigationOptions = { title } diff --git a/screens/topic/index.js b/screens/rakuen/topic/index.js similarity index 100% rename from screens/topic/index.js rename to screens/rakuen/topic/index.js diff --git a/screens/topic/item.js b/screens/rakuen/topic/item.js similarity index 100% rename from screens/topic/item.js rename to screens/rakuen/topic/item.js diff --git a/screens/topic/section-title.js b/screens/rakuen/topic/section-title.js similarity index 100% rename from screens/topic/section-title.js rename to screens/rakuen/topic/section-title.js diff --git a/screens/topic/store.js b/screens/rakuen/topic/store.js similarity index 100% rename from screens/topic/store.js rename to screens/rakuen/topic/store.js diff --git a/screens/topic/top.js b/screens/rakuen/topic/top.js similarity index 100% rename from screens/topic/top.js rename to screens/rakuen/topic/top.js diff --git a/screens/ugc-agree/index.js b/screens/rakuen/ugc-agree/index.js similarity index 100% rename from screens/ugc-agree/index.js rename to screens/rakuen/ugc-agree/index.js diff --git a/screens/tinygrail/index/auth.js b/screens/tinygrail/index/auth.js new file mode 100644 index 000000000..5537470d3 --- /dev/null +++ b/screens/tinygrail/index/auth.js @@ -0,0 +1,27 @@ +/* + * @Author: czy0729 + * @Date: 2019-09-04 21:58:42 + * @Last Modified by: czy0729 + * @Last Modified time: 2019-09-04 22:02:39 + */ +import React from 'react' +import PropTypes from 'prop-types' +import { Flex, Text, Button } from '@components' +import { observer } from '@utils/decorators' +import _ from '@styles' + +function Auth(props, { $ }) { + return ( + + + + ) +} + +Auth.contextTypes = { + $: PropTypes.object +} + +export default observer(Auth) diff --git a/screens/tinygrail/index/award.js b/screens/tinygrail/index/award.js deleted file mode 100644 index ddfeea02f..000000000 --- a/screens/tinygrail/index/award.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - * @Author: czy0729 - * @Date: 2019-05-29 16:08:10 - * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-22 16:59:26 - */ -import React from 'react' -import { StyleSheet, ScrollView, View } from 'react-native' -import PropTypes from 'prop-types' -import { Touchable, Image, Text, Flex } from '@components' -import { HOST } from '@constants' -import _ from '@styles' - -function Award(props, { navigation }) { - return ( - - - navigation.push('Award', { - uri: `${HOST}/award/2018` - }) - } - > - - - - - - {[2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010].map((item, index) => ( - - navigation.push('Award', { - uri: `${HOST}/award/${item}` - }) - } - > - - {index === 0 && ( - - BEST OF - - )} - - {item} - - - - ))} - - ) -} - -Award.contextTypes = { - navigation: PropTypes.object -} - -export default Award - -const styles = StyleSheet.create({ - container: { - padding: _.wind - }, - item: { - width: 312 - }, - itemSquare: { - width: 148, - height: 148, - borderRadius: _.radiusMd, - overflow: 'hidden' - }, - image: { - backgroundColor: _.colorDanger, - borderRadius: _.radiusMd, - overflow: 'hidden' - }, - imageTitle: { - position: 'absolute', - top: 0, - right: 0, - marginRight: -8 - } -}) diff --git a/screens/tinygrail/index/header.js b/screens/tinygrail/index/header.js deleted file mode 100644 index a8d216a95..000000000 --- a/screens/tinygrail/index/header.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * @Author: czy0729 - * @Date: 2019-08-10 17:53:18 - * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-18 21:40:03 - */ -import React from 'react' -import { View } from 'react-native' -import PropTypes from 'prop-types' -import { observer } from 'mobx-react' -import { Text } from '@components' -import { StatusBarPlaceholder } from '@screens/_' -import _ from '@styles' -import Award from './award' -import Section from './section' -import Section2 from './section2' - -function Header(props, { $ }) { - const { today } = $.home - return ( - <> - - -
- - - {today} - - - ) -} - -Header.contextTypes = { - $: PropTypes.object -} - -export default observer(Header) diff --git a/screens/tinygrail/index/index.js b/screens/tinygrail/index/index.js index c74bf754b..f5da2a3ef 100644 --- a/screens/tinygrail/index/index.js +++ b/screens/tinygrail/index/index.js @@ -2,29 +2,25 @@ * @Author: czy0729 * @Date: 2019-03-22 08:46:49 * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-27 19:50:48 + * @Last Modified time: 2019-09-04 22:01:47 */ import React from 'react' +import { ScrollView } from 'react-native' import PropTypes from 'prop-types' -import { Loading, ListView } from '@components' -import { StatusBarEvents, IconTabBar } from '@screens/_' +import { StatusBarEvents, StatusBarPlaceholder } from '@screens/_' import { inject, observer } from '@utils/decorators' import { hm } from '@utils/fetch' -import _ from '@styles' -import Header from './header' -import List from './list' +import Auth from './auth' import Store from './store' -const title = '发现' +const title = '小圣杯' export default @inject(Store) @observer -class Discovery extends React.Component { +class Tinygrail extends React.Component { static navigationOptions = { - header: null, - tabBarIcon: ({ tintColor }) => , - tabBarLabel: '发现' + header: null } static contextTypes = { @@ -35,30 +31,16 @@ class Discovery extends React.Component { const { $ } = this.context $.init() - hm('discovery', title) + hm('tinygrail', title) } render() { - const { $ } = this.context - const { _loaded } = $.home - if (!_loaded) { - return - } - return ( - <> + - item.type} - data={$.state.home} - ListHeaderComponent={
} - renderItem={({ item }) => } - onHeaderRefresh={$.init} - onFooterRefresh={$.fetchHome} - /> - + + + ) } } diff --git a/screens/tinygrail/index/list.js b/screens/tinygrail/index/list.js deleted file mode 100644 index fc1df1b10..000000000 --- a/screens/tinygrail/index/list.js +++ /dev/null @@ -1,198 +0,0 @@ -/* - * @Author: czy0729 - * @Date: 2019-05-29 04:03:46 - * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-25 14:29:08 - */ -import React from 'react' -import { StyleSheet, ScrollView, View } from 'react-native' -import PropTypes from 'prop-types' -import { observer } from 'mobx-react' -import { LinearGradient } from 'expo-linear-gradient' -import { Image, Text } from '@components' -import { SectionTitle, IconHeader } from '@screens/_' -import { findBangumiCn, getCoverLarge, getCoverMedium } from '@utils/app' -import { HOST, IMG_DEFAULT } from '@constants' -import { MODEL_SUBJECT_TYPE } from '@constants/model' -import _ from '@styles' - -const imageBigWidth = _.window.width - _.wind * 2 -const imageBigHeight = imageBigWidth * 1.28 -const imageWidth = _.window.width * 0.32 -const imageHeight = imageWidth * 1.28 -const linearColorLg = [ - 'rgba(0, 0, 0, 0)', - 'rgba(0, 0, 0, 0)', - 'rgba(0, 0, 0, 0)', - 'rgba(0, 0, 0, 0.8)' -] -const linearColorSm = [ - 'rgba(0, 0, 0, 0)', - 'rgba(0, 0, 0, 0)', - 'rgba(0, 0, 0, 0.8)' -] - -function List({ style, type }, { $, navigation }) { - if (!$.home[type].length) { - return null - } - - const data = $.home[type].sort(() => 0.5 - Math.random()) - const title = MODEL_SUBJECT_TYPE.getTitle(type) - return ( - <> - - navigation.push('WebView', { - uri: `${HOST}/${type}`, - title - }) - } - /> - } - > - {title} - - {[0].map(item => { - const src = getCoverLarge(data[item].cover) || IMG_DEFAULT - return ( - - - navigation.push('Subject', { - subjectId: data[item].subjectId, - _jp: data[item].title, - _image: src - }) - } - /> - - - - {data[item].info} - - - {findBangumiCn(data[item].title)} - - - - ) - })} - - {data - .filter((item, index) => index > 0) - .map(item => { - const src = getCoverMedium(item.cover) || IMG_DEFAULT - return ( - - - navigation.push('Subject', { - subjectId: item.subjectId, - _jp: item.title, - _image: src - }) - } - /> - - - - {item.info} - - - {findBangumiCn(item.title)} - - - - ) - })} - - - ) -} - -List.contextTypes = { - $: PropTypes.object, - navigation: PropTypes.object -} - -List.defaultProps = { - type: 'anime' -} - -export default observer(List) - -const styles = StyleSheet.create({ - contentContainerStyle: { - padding: _.wind, - paddingRight: 0 - }, - section: { - marginTop: _.wind, - marginHorizontal: _.wind - }, - big: { - marginTop: _.wind, - marginHorizontal: _.wind, - backgroundColor: _.colorIcon, - borderRadius: _.radiusMd, - overflow: 'hidden' - }, - desc: { - position: 'absolute', - zIndex: 1, - right: _.wind, - bottom: _.wind, - left: _.wind - }, - info: { - opacity: 0.88 - }, - title: { - opacity: 0.92 - }, - image: { - marginRight: _.wind, - backgroundColor: _.colorIcon, - borderRadius: _.radiusSm, - overflow: 'hidden' - } -}) diff --git a/screens/tinygrail/index/section.js b/screens/tinygrail/index/section.js deleted file mode 100644 index 5ca5f67cf..000000000 --- a/screens/tinygrail/index/section.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * @Author: czy0729 - * @Date: 2019-06-23 21:34:23 - * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-29 16:40:43 - */ -import React from 'react' -import { StyleSheet, View } from 'react-native' -import PropTypes from 'prop-types' -import { Flex, Text, Image, Touchable } from '@components' -import { random } from '@utils' -import { observer } from '@utils/decorators' -import { getCoverMedium } from '@utils/app' -import _ from '@styles' -import { sectionWidth, sectionHeight } from './store' - -function Section(props, { $, navigation }) { - let rankCover = '' - if ($.rank._loaded) { - rankCover = - $.rank.list.length && $.rank.list[random(0, $.rank.list.length - 1)].cover - } - - let calendarCover = '' - if ($.calendar._loaded) { - // 今天星期几的数据排最前 - let day = new Date().getDay() - if (day === 0) { - day = 7 - } - calendarCover = - $.calendar.list.slice(day - 1)[0].items[0].images.large || '' - } - - return ( - - navigation.push('Rank')}> - - {!!rankCover && ( - - )} - - - 排行榜 - - - - - navigation.push('Calendar')}> - - {!!calendarCover && ( - - )} - - - 每日放送 - - - - - - ) -} - -Section.contextTypes = { - $: PropTypes.object, - navigation: PropTypes.object -} - -export default observer(Section) - -const styles = StyleSheet.create({ - section: { - marginTop: _.wind, - marginHorizontal: _.wind - }, - desc: { - ...StyleSheet.absoluteFill, - zIndex: 1, - backgroundColor: _.colorMask - }, - image: { - width: sectionWidth, - height: sectionHeight, - marginRight: _.wind, - borderRadius: _.radiusSm, - overflow: 'hidden' - } -}) diff --git a/screens/tinygrail/index/section2.js b/screens/tinygrail/index/section2.js deleted file mode 100644 index c850f4e7a..000000000 --- a/screens/tinygrail/index/section2.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * @Author: czy0729 - * @Date: 2019-07-28 18:16:49 - * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-10 17:43:05 - */ -import React from 'react' -import { StyleSheet, View } from 'react-native' -import PropTypes from 'prop-types' -import { Flex, Text, Image, Touchable } from '@components' -import { observer } from '@utils/decorators' -import { getCoverMedium } from '@utils/app' -import _ from '@styles' -import { sectionWidth, sectionHeight } from './store' - -function Section2(props, { $, navigation }) { - let randomCover = '' - if ($.random._loaded) { - randomCover = $.random.list.length && $.random.list[0].cover - } - return ( - - navigation.push('Random')}> - - {!!randomCover && ( - - )} - - - 随便看看 - - - - - navigation.push('Anitama')}> - - - - - - ) -} - -Section2.contextTypes = { - $: PropTypes.object, - navigation: PropTypes.object -} - -export default observer(Section2) - -const styles = StyleSheet.create({ - section: { - marginTop: _.wind, - marginHorizontal: _.wind - }, - desc: { - ...StyleSheet.absoluteFill, - zIndex: 1, - backgroundColor: _.colorMask - }, - image: { - width: sectionWidth, - height: sectionHeight, - marginRight: _.wind, - borderRadius: _.radiusSm, - overflow: 'hidden' - } -}) diff --git a/screens/tinygrail/index/store.js b/screens/tinygrail/index/store.js index c87b47702..c1281d428 100644 --- a/screens/tinygrail/index/store.js +++ b/screens/tinygrail/index/store.js @@ -2,86 +2,110 @@ * @Author: czy0729 * @Date: 2019-03-22 08:49:20 * @Last Modified by: czy0729 - * @Last Modified time: 2019-08-30 23:25:44 + * @Last Modified time: 2019-09-04 23:10:42 */ +import cheerio from 'cheerio-without-node-native' import { observable, computed } from 'mobx' -import { calendarStore, discoveryStore, tagStore } from '@stores' -import { getTimestamp } from '@utils' +import { userStore, tinygrailStore } from '@stores' import store from '@utils/store' -import { MODEL_SUBJECT_TYPE } from '@constants/model' +import { xhrCustom } from '@utils/fetch' +import { + HOST, + TINYGRAIL_APP_ID, + TINYGRAIL_OAUTH_REDIRECT_URL +} from '@constants' import _ from '@styles' export const sectionWidth = (_.window.width - _.wind * 3) / 2 export const sectionHeight = sectionWidth / 1.68 +const HOST_BANGUMI = 'https://bangumi.tv' -export default class ScreenDiscovery extends store { +export default class ScreenTinygrail extends store { state = observable({ - home: { - list: [ - { - type: MODEL_SUBJECT_TYPE.getLabel('动画') - }, - { - type: MODEL_SUBJECT_TYPE.getLabel('书籍') - } - ], - pagination: { - page: 1, - pageTotal: 2 - }, - _loaded: getTimestamp() - } + info: '' }) - init = async () => { - // 随便看看 - if (!this.random._loaded) { - await discoveryStore.fetchRandom(true) - } + formhash = '' - // 每日放送 - if (!this.calendar._loaded) { - await calendarStore.fetchCalendar() - } + init = async () => {} - // 排行版 - if (!this.rank._loaded) { - await tagStore.fetchRank() - } + // -------------------- get -------------------- + @computed get userCookie() { + return userStore.userCookie + } - // 推荐数据 - return calendarStore.fetchHome() + // -------------------- action -------------------- + doAuth = async () => { + await this.oauth() + await this.authorize() } - fetchHome = () => { + /** + * 获取授权表单码 + */ + oauth = async () => { this.setState({ - home: { - list: MODEL_SUBJECT_TYPE.data.map(item => ({ - type: item.label - })), - pagination: { - page: 2, - pageTotal: 2 - }, - _loaded: getTimestamp() + info: `${this.retryText}获取授权表单码...(1/4)` + }) + + const { cookie, userAgent } = this.userCookie + const res = xhrCustom({ + url: `${HOST}/oauth/authorize?client_id=${TINYGRAIL_APP_ID}&response_type=code&redirect_uri=${TINYGRAIL_OAUTH_REDIRECT_URL}`, + headers: { + Cookie: `chii_cookietime=2592000; ${cookie}`, + 'User-Agent': userAgent } }) - } - // -------------------- get -------------------- - @computed get home() { - return calendarStore.home - } + const data = await res + log(data) + const { _response } = data - @computed get random() { - return discoveryStore.random - } + this.formhash = cheerio + .load(_response)('input[name=formhash]') + .attr('value') - @computed get calendar() { - return calendarStore.calendar + return res } - @computed get rank() { - return tagStore.rank() + authorize = async () => { + this.setState({ + info: `${this.retryText}授权中...(2/4)` + }) + + const { cookie, userAgent } = this.userCookie + const res = xhrCustom({ + method: 'POST', + url: `${HOST}/oauth/authorize?client_id=${TINYGRAIL_APP_ID}&response_type=code&redirect_uri=${TINYGRAIL_OAUTH_REDIRECT_URL}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Cookie: `chii_cookietime=2592000; ${cookie}`, + 'User-Agent': userAgent, + 'cache-control': 'no-cache', + origin: 'https://bgm.tv', + pragma: 'no-cache', + referer: `${HOST}/oauth/authorize?client_id=${TINYGRAIL_APP_ID}&response_type=code&redirect_uri=${TINYGRAIL_OAUTH_REDIRECT_URL}`, + 'sec-fetch-mode': 'navigate', + 'sec-fetch-site': 'same-origin', + 'sec-fetch-user': '?1', + 'upgrade-insecure-requests': '1' + }, + data: { + formhash: this.formhash, + redirect_uri: '', + client_id: TINYGRAIL_APP_ID, + submit: '授权' + } + }) + + const data = await res + log(data) + + // const { responseURL } = await res + // this.code = responseURL + // .split('=') + // .slice(1) + // .join('=') + return res } } diff --git a/screens/tinygrail/search/index.js b/screens/tinygrail/search/index.js index b352ef597..37ed12e30 100644 --- a/screens/tinygrail/search/index.js +++ b/screens/tinygrail/search/index.js @@ -2,7 +2,7 @@ * @Author: czy0729 * @Date: 2019-09-03 21:52:01 * @Last Modified by: czy0729 - * @Last Modified time: 2019-09-03 22:03:33 + * @Last Modified time: 2019-09-04 00:33:01 */ import React from 'react' import { StyleSheet, View } from 'react-native' @@ -35,7 +35,7 @@ class TinygrailSearch extends React.Component { const { $ } = this.context $.init() - hm('subject_search', title) + hm('tinygrailSearch', title) } render() { diff --git a/screens/tinygrail/trade/index.js b/screens/tinygrail/trade/index.js index b4065ffa7..0b35bc2cc 100644 --- a/screens/tinygrail/trade/index.js +++ b/screens/tinygrail/trade/index.js @@ -2,7 +2,7 @@ * @Author: czy0729 * @Date: 2019-09-01 00:34:30 * @Last Modified by: czy0729 - * @Last Modified time: 2019-09-03 22:23:45 + * @Last Modified time: 2019-09-04 21:52:05 */ import React from 'react' import { StyleSheet, ScrollView, View } from 'react-native' @@ -11,6 +11,7 @@ import { Button } from '@components' import { StatusBarPlaceholder, StatusBarEvents } from '@screens/_' import { open } from '@utils' import { inject, observer } from '@utils/decorators' +import { hm } from '@utils/fetch' import _ from '@styles' import Store from './store' import Header from './header' @@ -36,6 +37,8 @@ class TinygrailTrade extends React.Component { componentDidMount() { const { $ } = this.context $.init() + + hm(`tinygrail/trade?id=${$.monoId}`) } jump = () => { diff --git a/screens/friends/index.js b/screens/user/friends/index.js similarity index 100% rename from screens/friends/index.js rename to screens/user/friends/index.js diff --git a/screens/friends/store.js b/screens/user/friends/store.js similarity index 100% rename from screens/friends/store.js rename to screens/user/friends/store.js diff --git a/screens/user/head.js b/screens/user/index/head.js similarity index 100% rename from screens/user/head.js rename to screens/user/index/head.js diff --git a/screens/user/index.js b/screens/user/index/index.js similarity index 100% rename from screens/user/index.js rename to screens/user/index/index.js diff --git a/screens/user/list.js b/screens/user/index/list.js similarity index 100% rename from screens/user/list.js rename to screens/user/index/list.js diff --git a/screens/user/parallax-image.js b/screens/user/index/parallax-image.js similarity index 100% rename from screens/user/parallax-image.js rename to screens/user/index/parallax-image.js diff --git a/screens/user/store.js b/screens/user/index/store.js similarity index 100% rename from screens/user/store.js rename to screens/user/index/store.js diff --git a/screens/user/tab-bar-left.js b/screens/user/index/tab-bar-left.js similarity index 100% rename from screens/user/tab-bar-left.js rename to screens/user/index/tab-bar-left.js diff --git a/screens/user/tabs.js b/screens/user/index/tabs.js similarity index 100% rename from screens/user/tabs.js rename to screens/user/index/tabs.js diff --git a/screens/user/tool-bar.js b/screens/user/index/tool-bar.js similarity index 100% rename from screens/user/tool-bar.js rename to screens/user/index/tool-bar.js diff --git a/screens/setting/index.js b/screens/user/setting/index.js similarity index 100% rename from screens/setting/index.js rename to screens/user/setting/index.js diff --git a/screens/zone/about.js b/screens/user/zone/about.js similarity index 100% rename from screens/zone/about.js rename to screens/user/zone/about.js diff --git a/screens/zone/bangumi-list.js b/screens/user/zone/bangumi-list.js similarity index 100% rename from screens/zone/bangumi-list.js rename to screens/user/zone/bangumi-list.js diff --git a/screens/zone/head.js b/screens/user/zone/head.js similarity index 100% rename from screens/zone/head.js rename to screens/user/zone/head.js diff --git a/screens/zone/index.js b/screens/user/zone/index.js similarity index 100% rename from screens/zone/index.js rename to screens/user/zone/index.js diff --git a/screens/zone/parallax-image.js b/screens/user/zone/parallax-image.js similarity index 100% rename from screens/zone/parallax-image.js rename to screens/user/zone/parallax-image.js diff --git a/screens/zone/store.js b/screens/user/zone/store.js similarity index 100% rename from screens/zone/store.js rename to screens/user/zone/store.js diff --git a/screens/zone/tabs.js b/screens/user/zone/tabs.js similarity index 100% rename from screens/zone/tabs.js rename to screens/user/zone/tabs.js diff --git a/screens/zone/timeline-list.js b/screens/user/zone/timeline-list.js similarity index 100% rename from screens/zone/timeline-list.js rename to screens/user/zone/timeline-list.js