diff --git a/.gitignore b/.gitignore index 79ad53c..7963fc6 100755 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,10 @@ /.vscode /.idea *.iml + +# HBuilder +/h5pack/*.js +/h5pack/*.css +/h5pack/index.html +/h5pack/favicon.ico +/h5pack/static/ diff --git a/h5pack/manifest.json b/h5pack/manifest.json new file mode 100644 index 0000000..0c5184c --- /dev/null +++ b/h5pack/manifest.json @@ -0,0 +1,225 @@ +{ + "@platforms" : [ "android", "iPhone" ], + "id" : "H51E9A088", /*应用的标识*/ + "name" : "FIV", /*应用名称,程序桌面图标名称*/ + "version" : { + "name" : "1.0", /*应用版本名称*/ + "code" : 1 + }, + "description" : "", /*应用描述信息*/ + "icons" : { + "72" : "icon.png" + }, + "launch_path" : "index.html", /*应用的入口页面,默认为根目录下的index.html;支持网络地址,必须以http://或https://开头*/ + "developer" : { + "name" : "", /*开发者名称*/ + "email" : "", /*开发者邮箱地址*/ + "url" : "" /*开发者个人主页地址*/ + }, + "permissions" : { + "Accelerometer" : { + "description" : "访问加速度感应器" + }, + "Audio" : { + "description" : "访问麦克风" + }, + "Cache" : { + "description" : "管理应用缓存" + }, + "Camera" : { + "description" : "访问摄像头" + }, + "Console" : { + "description" : "跟踪调试输出日志" + }, + "Device" : { + "description" : "访问设备信息" + }, + "Downloader" : { + "description" : "文件下载管理" + }, + "Events" : { + "description" : "应用扩展事件" + }, + "File" : { + "description" : "访问本地文件系统" + }, + "Gallery" : { + "description" : "访问系统相册" + }, + "Geolocation" : { + "description" : "访问位置信息" + }, + "Invocation" : { + "description" : "使用Native.js能力" + }, + "Orientation" : { + "description" : "访问方向感应器" + }, + "Proximity" : { + "description" : "访问距离感应器" + }, + "Share" : { + "description" : "分享" + }, + "Storage" : { + "description" : "管理应用本地数据" + }, + "Uploader" : { + "description" : "管理文件上传任务" + }, + "Runtime" : { + "description" : "访问运行期环境" + }, + "XMLHttpRequest" : { + "description" : "跨域网络访问" + }, + "Zip" : { + "description" : "文件压缩与解压缩" + }, + "Barcode" : { + "description" : "管理二维码扫描插件" + }, + "Webview" : { + "description" : "窗口管理" + }, + "NativeUI" : { + "description" : "原生UI控件" + }, + "Navigator" : { + "description" : "浏览器信息" + }, + "NativeObj" : { + "description" : "原生对象" + } + }, + "plus" : { + "splashscreen" : { + "autoclose" : true, /*是否自动关闭程序启动界面,true表示应用加载应用入口页面后自动关闭;false则需调plus.navigator.closeSplashscreen()关闭*/ + "waiting" : true /*是否在程序启动界面显示等待雪花,true表示显示,false表示不显示。*/ + }, + "popGesture" : "close", /*设置应用默认侧滑返回关闭Webview窗口,"none"为无侧滑返回功能,"hide"为侧滑隐藏Webview窗口。参考http://ask.dcloud.net.cn/article/102*/ + "runmode" : "normal", /*应用的首次启动运行模式,可取liberate或normal,liberate模式在第一次启动时将解压应用资源(Android平台File API才可正常访问_www目录)*/ + "signature" : "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==", /*可选,保留给应用签名,暂不使用*/ + "distribute" : { + "apple" : { + "appid" : "org.faronear.fiv", /*iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5*/ + "mobileprovision" : "", /*iOS应用打包配置文件*/ + "password" : "", /*iOS应用打包个人证书导入密码*/ + "p12" : "", /*iOS应用打包个人证书,打包配置文件关联的个人证书*/ + "devices" : "iphone", /*iOS应用支持的设备类型,可取值iphone/ipad/universal*/ + "frameworks" : [] /*调用Native.js调用原生Objective-c API需要引用的FrameWork,如需调用GameCenter,则添加"GameKit.framework"*/ + }, + "google" : { + "packagename" : "org.faronear.fiv", /*Android应用包名,如io.dcloud.HelloH5*/ + "keystore" : "unpackage/key/fiv.keystore", /*Android应用打包使用的密钥库文件*/ + "password" : "fivfiv", /*Android应用打包使用密钥库中证书的密码*/ + "aliasname" : "fiv", /*Android应用打包使用密钥库中证书的别名*/ + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /*使用Native.js调用原生安卓API需要使用到的系统权限*/ + "orientation" : [ "portrait-primary" ], /*应用支持的方向,portrait-primary:竖屏正方向;portrait-secondary:竖屏反方向;landscape-primary:横屏正方向;landscape-secondary:横屏反方向*/ + "icons" : { + "ios" : { + "prerendered" : true, /*应用图标是否已经高亮处理,在iOS6及以下设备上有效*/ + "auto" : "", /*应用图标,分辨率:512x512,用于自动生成各种尺寸程序图标*/ + "iphone" : { + "normal" : "", /*iPhone3/3GS程序图标,分辨率:57x57*/ + "retina" : "", /*iPhone4程序图标,分辨率:114x114*/ + "retina7" : "", /*iPhone4S/5/6程序图标,分辨率:120x120*/ + "retina8" : "", /*iPhone6 Plus程序图标,分辨率:180x180*/ + "spotlight-normal" : "", /*iPhone3/3GS Spotlight搜索程序图标,分辨率:29x29*/ + "spotlight-retina" : "", /*iPhone4 Spotlight搜索程序图标,分辨率:58x58*/ + "spotlight-retina7" : "", /*iPhone4S/5/6 Spotlight搜索程序图标,分辨率:80x80*/ + "settings-normal" : "", /*iPhone4设置页面程序图标,分辨率:29x29*/ + "settings-retina" : "", /*iPhone4S/5/6设置页面程序图标,分辨率:58x58*/ + "settings-retina8" : "", /*iPhone6Plus设置页面程序图标,分辨率:87x87*/ + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + }, + "ipad" : { + "normal" : "", /*iPad普通屏幕程序图标,分辨率:72x72*/ + "retina" : "", /*iPad高分屏程序图标,分辨率:144x144*/ + "normal7" : "", /*iPad iOS7程序图标,分辨率:76x76*/ + "retina7" : "", /*iPad iOS7高分屏程序图标,分辨率:152x152*/ + "spotlight-normal" : "", /*iPad Spotlight搜索程序图标,分辨率:50x50*/ + "spotlight-retina" : "", /*iPad高分屏Spotlight搜索程序图标,分辨率:100x100*/ + "spotlight-normal7" : "", /*iPad iOS7 Spotlight搜索程序图标,分辨率:40x40*/ + "spotlight-retina7" : "", /*iPad iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/ + "settings-normal" : "", /*iPad设置页面程序图标,分辨率:29x29*/ + "settings-retina" : "", /*iPad高分屏设置页面程序图标,分辨率:58x58*/ + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "appstore" : "unpackage/res/icons/1024x1024.png" + }, + "android" : { + "mdpi" : "", /*普通屏程序图标,分辨率:48x48*/ + "ldpi" : "", /*大屏程序图标,分辨率:48x48*/ + "hdpi" : "unpackage/res/icons/72x72.png", /*高分屏程序图标,分辨率:72x72*/ + "xhdpi" : "unpackage/res/icons/96x96.png", /*720P高分屏程序图标,分辨率:96x96*/ + "xxhdpi" : "unpackage/res/icons/144x144.png", /*1080P 高分屏程序图标,分辨率:144x144*/ + "xxxhdpi" : "unpackage/res/icons/192x192.png" + } + }, + "splashscreen" : { + "ios" : { + "iphone" : { + "default" : "", /*iPhone3启动图片选,分辨率:320x480*/ + "retina35" : "", /*3.5英寸设备(iPhone4)启动图片,分辨率:640x960*/ + "retina40" : "", /*4.0 英寸设备(iPhone5/iPhone5s)启动图片,分辨率:640x1136*/ + "retina47" : "", /*4.7 英寸设备(iPhone6)启动图片,分辨率:750x1334*/ + "retina55" : "", /*5.5 英寸设备(iPhone6 Plus)启动图片,分辨率:1242x2208*/ + "retina55l" : "" /*5.5 英寸设备(iPhone6 Plus)横屏启动图片,分辨率:2208x1242*/ + }, + "ipad" : { + "portrait" : "", /*iPad竖屏启动图片,分辨率:768x1004*/ + "portrait-retina" : "", /*iPad高分屏竖屏图片,分辨率:1536x2008*/ + "landscape" : "", /*iPad横屏启动图片,分辨率:1024x748*/ + "landscape-retina" : "", /*iPad高分屏横屏启动图片,分辨率:2048x1496*/ + "portrait7" : "", /*iPad iOS7竖屏启动图片,分辨率:768x1024*/ + "portrait-retina7" : "", /*iPad iOS7高分屏竖屏图片,分辨率:1536x2048*/ + "landscape7" : "", /*iPad iOS7横屏启动图片,分辨率:1024x768*/ + "landscape-retina7" : "" /*iPad iOS7高分屏横屏启动图片,分辨率:2048x1536*/ + } + }, + "android" : { + "mdpi" : "", /*普通屏启动图片,分辨率:240x282*/ + "ldpi" : "", /*大屏启动图片,分辨率:320x442*/ + "hdpi" : "", /*高分屏启动图片,分辨率:480x762*/ + "xhdpi" : "", /*720P高分屏启动图片,分辨率:720x1242*/ + "xxhdpi" : "" /*1080P高分屏启动图片,分辨率:1080x1882*/ + } + }, + "plugins" : { + "speech" : {} + } + } + } +} diff --git a/h5pack/unpackage/key/fiv.keystore b/h5pack/unpackage/key/fiv.keystore new file mode 100644 index 0000000..6091535 Binary files /dev/null and b/h5pack/unpackage/key/fiv.keystore differ diff --git a/h5pack/unpackage/res/icons/1024x1024.png b/h5pack/unpackage/res/icons/1024x1024.png new file mode 100644 index 0000000..2157ce0 Binary files /dev/null and b/h5pack/unpackage/res/icons/1024x1024.png differ diff --git a/h5pack/unpackage/res/icons/120x120.png b/h5pack/unpackage/res/icons/120x120.png new file mode 100644 index 0000000..4b359c3 Binary files /dev/null and b/h5pack/unpackage/res/icons/120x120.png differ diff --git a/h5pack/unpackage/res/icons/144x144.png b/h5pack/unpackage/res/icons/144x144.png new file mode 100644 index 0000000..5a8700c Binary files /dev/null and b/h5pack/unpackage/res/icons/144x144.png differ diff --git a/h5pack/unpackage/res/icons/152x152.png b/h5pack/unpackage/res/icons/152x152.png new file mode 100644 index 0000000..94a1bf2 Binary files /dev/null and b/h5pack/unpackage/res/icons/152x152.png differ diff --git a/h5pack/unpackage/res/icons/167x167.png b/h5pack/unpackage/res/icons/167x167.png new file mode 100644 index 0000000..c401a49 Binary files /dev/null and b/h5pack/unpackage/res/icons/167x167.png differ diff --git a/h5pack/unpackage/res/icons/180x180.png b/h5pack/unpackage/res/icons/180x180.png new file mode 100644 index 0000000..a22cdbd Binary files /dev/null and b/h5pack/unpackage/res/icons/180x180.png differ diff --git a/h5pack/unpackage/res/icons/192x192.png b/h5pack/unpackage/res/icons/192x192.png new file mode 100644 index 0000000..bfd8601 Binary files /dev/null and b/h5pack/unpackage/res/icons/192x192.png differ diff --git a/h5pack/unpackage/res/icons/20x20.png b/h5pack/unpackage/res/icons/20x20.png new file mode 100644 index 0000000..edd5e34 Binary files /dev/null and b/h5pack/unpackage/res/icons/20x20.png differ diff --git a/h5pack/unpackage/res/icons/29x29.png b/h5pack/unpackage/res/icons/29x29.png new file mode 100644 index 0000000..40746ea Binary files /dev/null and b/h5pack/unpackage/res/icons/29x29.png differ diff --git a/h5pack/unpackage/res/icons/40x40.png b/h5pack/unpackage/res/icons/40x40.png new file mode 100644 index 0000000..d977445 Binary files /dev/null and b/h5pack/unpackage/res/icons/40x40.png differ diff --git a/h5pack/unpackage/res/icons/58x58.png b/h5pack/unpackage/res/icons/58x58.png new file mode 100644 index 0000000..7fdcbb2 Binary files /dev/null and b/h5pack/unpackage/res/icons/58x58.png differ diff --git a/h5pack/unpackage/res/icons/60x60.png b/h5pack/unpackage/res/icons/60x60.png new file mode 100644 index 0000000..d7deb32 Binary files /dev/null and b/h5pack/unpackage/res/icons/60x60.png differ diff --git a/h5pack/unpackage/res/icons/72x72.png b/h5pack/unpackage/res/icons/72x72.png new file mode 100644 index 0000000..406104f Binary files /dev/null and b/h5pack/unpackage/res/icons/72x72.png differ diff --git a/h5pack/unpackage/res/icons/76x76.png b/h5pack/unpackage/res/icons/76x76.png new file mode 100644 index 0000000..a499759 Binary files /dev/null and b/h5pack/unpackage/res/icons/76x76.png differ diff --git a/h5pack/unpackage/res/icons/80x80.png b/h5pack/unpackage/res/icons/80x80.png new file mode 100644 index 0000000..94d9109 Binary files /dev/null and b/h5pack/unpackage/res/icons/80x80.png differ diff --git a/h5pack/unpackage/res/icons/87x87.png b/h5pack/unpackage/res/icons/87x87.png new file mode 100644 index 0000000..d36b691 Binary files /dev/null and b/h5pack/unpackage/res/icons/87x87.png differ diff --git a/h5pack/unpackage/res/icons/96x96.png b/h5pack/unpackage/res/icons/96x96.png new file mode 100644 index 0000000..b379751 Binary files /dev/null and b/h5pack/unpackage/res/icons/96x96.png differ diff --git a/src/models/user.ts b/src/models/user.ts index 12e2236..43ce708 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -1,8 +1,10 @@ import { Model } from 'dva'; +import { delay } from 'dva/saga'; import _ from 'lodash'; import { getLocale, setLocale } from 'umi-plugin-locale' import { loadUser, storeUser, clearUser, clearMineList, clearCoins, clearDrawCoins } from '@/utils/storage'; import { User } from '@/types/common'; +import { isApp, restart } from '@/utils/h5plus'; const initState = () => { const user = loadUser(); @@ -55,7 +57,7 @@ const model: Model = { }, *changeLang({ payload: lang }, { put }) { - setLocale(lang); + setLocale(lang, false); yield put({ type: 'onUpdateState', payload: { lang } }); }, }, diff --git a/src/pages/home/market/index.tsx b/src/pages/home/market/index.tsx index cfffe45..ac87c6c 100644 --- a/src/pages/home/market/index.tsx +++ b/src/pages/home/market/index.tsx @@ -1,6 +1,6 @@ import React, { useEffect } from 'react'; import { connect, DispatchProp, routerRedux } from 'dva'; -import { Spin, Icon } from 'antd'; +import _ from 'lodash'; import { formatMessage } from 'umi-plugin-locale'; import FittedImage from 'react-fitted-image'; import { HomeCommunityModelState } from './model'; @@ -10,6 +10,7 @@ import List from '@/components/List'; import { dispatch } from '@/utils/utils'; import styles from './style.less'; +import { displayPhone } from '@/utils/transform'; const CommunityPage: React.FC = ({ dispatch, @@ -79,10 +80,10 @@ const CommunityPage: React.FC = ({ {it.avatar ? :
{(it.nickname && it.nickname[0]) || 'F'}
} + /> :
{(it.nickname && it.nickname[0]) || _.last(it.phone) || 'F'}
}
- {it.nickname || it.phone} + {it.nickname || displayPhone(it.phone)} {formatMessage({ id: 'home.community.time' })}{it.createdAt}
diff --git a/src/pages/home/profile/index.tsx b/src/pages/home/profile/index.tsx index e5bfcec..bf4c028 100644 --- a/src/pages/home/profile/index.tsx +++ b/src/pages/home/profile/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import FittedImage from 'react-fitted-image'; import { connect, DispatchProp, routerRedux } from 'dva'; +import _ from 'lodash'; import { UserModelState } from '@/models/user'; import SettingItem from '@/components/SettingItem'; import logoAccount from '@/assets/p_account.png'; @@ -24,7 +25,7 @@ const ProfilePage: React.FC = ({
{user.avatar ? : - {user.nickname ? user.nickname[0] : user.phone[0]} + {user.nickname ? user.nickname[0] : _.last(user.phone)} }
{user.nickname || user.phone} diff --git a/src/utils/h5plus.ts b/src/utils/h5plus.ts index 91d5317..a7f57fd 100644 --- a/src/utils/h5plus.ts +++ b/src/utils/h5plus.ts @@ -1,15 +1,17 @@ import { dispatch, getState } from './utils'; import { routerRedux } from 'dva'; -const plus = window.plus; - -const isApp = () => typeof plus !== 'undefined'; +const isApp = () => { + const r = typeof window.plus !== 'undefined'; + // console.log(r); + return r; +}; const barcodeId = 'barcode' const scan = () => { if (!isApp()) return Promise.resolve(''); return new Promise(resolve => { - const { barcode, webview } = plus; + const { barcode, webview } = window.plus; const bc = barcode.create(barcodeId, [barcode.QR], { position: 'absolute', left: '0px', @@ -38,42 +40,48 @@ const firstPaths = [ '/home/profile', ]; const backButtonHandler = () => { - const barcode = plus.barcode.getBarcodeById(barcodeId); + const barcode = window.plus.barcode.getBarcodeById(barcodeId); if (barcode) { barcode.close(); return; } const { pathname } = getState().router.location; if (firstPaths.includes(pathname)) { - plus.runtime.quit(); + window.plus.runtime.quit(); } else { dispatch(routerRedux.goBack()); } }; const init = () => { if (!isApp()) return; - plus.key.addEventListener('backbutton', backButtonHandler); + window.plus.key.addEventListener('backbutton', backButtonHandler); }; const destory = () => { if (!isApp()) return; - plus.key.removeEventListener('backbutton', backButtonHandler); + window.plus.key.removeEventListener('backbutton', backButtonHandler); }; const share = (content: string) => { if (!isApp()) return; - plus.share.sendWithSystem({ + window.plus.share.sendWithSystem({ type: 'text', content, }, () => { }); }; +const restart = () => { + if (!isApp()) return; + window.plus.runtime.restart(); +} + export { init, isApp, scan, share, destory, + restart, }; export default { @@ -82,4 +90,5 @@ export default { scan, share, destory, + restart, }; diff --git a/src/utils/transform.ts b/src/utils/transform.ts index f7a3871..9792ead 100644 --- a/src/utils/transform.ts +++ b/src/utils/transform.ts @@ -46,3 +46,7 @@ export function fromLangToText(lang: string) { export function encryptPwd(pwd: string): string { return md5(pwd); } + +export function displayPhone(phone: string): string { + return `1******${_.takeRight(phone, 4).join('')}`; +}