Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
fe3d807c
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
725
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fe3d807c
编写于
6月 28, 2021
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(App): share、shareWithSystem
上级
1b5dcdd9
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
240 addition
and
4 deletion
+240
-4
packages/uni-api/src/index.ts
packages/uni-api/src/index.ts
+1
-0
packages/uni-api/src/protocols/plugin/share.ts
packages/uni-api/src/protocols/plugin/share.ts
+79
-0
packages/uni-app-plus/src/service/api/index.ts
packages/uni-app-plus/src/service/api/index.ts
+1
-0
packages/uni-app-plus/src/service/api/plugin/oauth.ts
packages/uni-app-plus/src/service/api/plugin/oauth.ts
+2
-4
packages/uni-app-plus/src/service/api/plugin/share.ts
packages/uni-app-plus/src/service/api/plugin/share.ts
+157
-0
未找到文件。
packages/uni-api/src/index.ts
浏览文件 @
fe3d807c
...
...
@@ -79,6 +79,7 @@ export * from './protocols/ui/window'
export
*
from
'
./protocols/plugin/getProvider
'
export
*
from
'
./protocols/plugin/oauth
'
export
*
from
'
./protocols/plugin/share
'
// helpers
export
{
defineOnApi
,
...
...
packages/uni-api/src/protocols/plugin/share.ts
0 → 100644
浏览文件 @
fe3d807c
import
{
elemInArray
}
from
'
../../helpers/protocol
'
export
const
API_SHREA
=
'
share
'
export
type
API_TYPE_SHARE
=
typeof
uni
.
share
const
SCENE
:
Parameters
<
API_TYPE_SHARE
>
[
0
][
'
scene
'
][]
=
[
'
WXSceneSession
'
,
'
WXSenceTimeline
'
,
'
WXSceneFavorite
'
,
]
export
const
SahreOptions
:
ApiOptions
<
API_TYPE_SHARE
>
=
{
formatArgs
:
{
scene
(
value
,
params
)
{
if
(
params
.
provider
===
'
weixin
'
&&
(
!
value
||
!
SCENE
.
includes
(
value
)))
{
return
`分享到微信时,scene必须为以下其中一个:
${
SCENE
.
join
(
'
、
'
)}
`
}
},
summary
(
value
,
params
)
{
if
(
params
.
type
===
1
&&
!
value
)
{
return
'
分享纯文本时,summary必填
'
}
},
href
(
value
,
params
)
{
if
(
params
.
type
===
0
&&
!
value
)
{
return
'
分享图文时,href必填
'
}
},
imageUrl
(
value
,
params
)
{
if
([
0
,
2
,
5
].
includes
(
Number
(
params
.
type
))
&&
!
value
)
{
return
'
分享图文、纯图片、小程序时,imageUrl必填,推荐使用小于20Kb的图片
'
}
},
mediaUrl
(
value
,
params
)
{
if
([
3
,
4
].
includes
(
Number
(
params
.
type
))
&&
!
value
)
{
return
'
分享音乐、视频时,mediaUrl必填
'
}
},
miniProgram
(
value
,
params
)
{
if
(
params
.
type
===
5
&&
!
value
)
{
return
'
分享小程序时,miniProgram必填
'
}
},
},
}
export
const
ShareProtocols
:
ApiProtocol
<
API_TYPE_SHARE
>
=
{
provider
:
{
type
:
String
as
any
,
required
:
true
,
},
type
:
Number
as
any
,
title
:
String
,
scene
:
String
as
any
,
summary
:
String
,
href
:
String
,
imageUrl
:
String
,
mediaUrl
:
String
,
miniProgram
:
Object
,
}
export
const
API_SHARE_WITH_SYSTEM
=
'
shareWithSystem
'
export
type
API_TYPE_SHARE_WITH_SYSTEM
=
typeof
uni
.
shareWithSystem
const
TYPE
:
Parameters
<
API_TYPE_SHARE_WITH_SYSTEM
>
[
0
][
'
type
'
][]
=
[
'
text
'
,
'
image
'
,
]
export
const
ShareWithSystemOptions
:
ApiOptions
<
API_TYPE_SHARE_WITH_SYSTEM
>
=
{
formatArgs
:
{
type
(
value
,
params
)
{
if
(
!
TYPE
.
includes
(
value
))
return
'
分享参数 type 不正确
'
return
elemInArray
(
value
,
TYPE
)
},
},
}
export
const
ShareWithSystemProtocols
:
ApiProtocol
<
API_TYPE_SHARE_WITH_SYSTEM
>
=
{
type
:
String
as
any
,
summary
:
String
,
href
:
String
,
imageUrl
:
String
,
}
packages/uni-app-plus/src/service/api/index.ts
浏览文件 @
fe3d807c
...
...
@@ -35,3 +35,4 @@ export * from './ui/popup/showToast'
export
*
from
'
./plugin/getProvider
'
export
*
from
'
./plugin/oauth
'
export
*
from
'
./plugin/share
'
packages/uni-app-plus/src/service/api/plugin/oauth.ts
浏览文件 @
fe3d807c
...
...
@@ -16,7 +16,7 @@ import {
API_TYPE_CLOSE_AUTH_VIEW
,
defineAsyncApi
,
}
from
'
@dcloudio/uni-api
'
import
{
isPlainObject
}
from
'
@vue/shared
'
import
{
isPlainObject
,
toTypeString
}
from
'
@vue/shared
'
import
{
warpPlusSuccessCallback
,
warpPlusErrorCallback
,
...
...
@@ -202,11 +202,9 @@ function univerifyButtonsClickHandling(
errorCallback
:
Function
)
{
if
(
univerifyStyle
&&
isPlainObject
(
univerifyStyle
)
&&
univerifyStyle
.
buttons
&&
Object
.
prototype
.
toString
.
call
(
univerifyStyle
.
buttons
.
list
)
===
'
[object Array]
'
&&
toTypeString
(
univerifyStyle
.
buttons
.
list
)
===
'
[object Array]
'
&&
univerifyStyle
.
buttons
.
list
!
.
length
>
0
)
{
univerifyStyle
.
buttons
.
list
!
.
forEach
((
button
,
index
)
=>
{
...
...
packages/uni-app-plus/src/service/api/plugin/share.ts
0 → 100644
浏览文件 @
fe3d807c
import
{
getRealPath
}
from
'
@dcloudio/uni-platform
'
import
{
warpPlusErrorCallback
}
from
'
../../../helpers/plus
'
import
{
defineAsyncApi
,
API_SHREA
,
API_TYPE_SHARE
,
SahreOptions
,
ShareProtocols
,
API_SHARE_WITH_SYSTEM
,
API_TYPE_SHARE_WITH_SYSTEM
,
ShareWithSystemOptions
,
ShareWithSystemProtocols
,
}
from
'
@dcloudio/uni-api
'
// 0:图文,1:纯文字,2:纯图片,3:音乐,4:视频,5:小程序
const
TYPES
=
{
0
:
{
name
:
'
web
'
,
title
:
'
图文
'
,
},
1
:
{
name
:
'
text
'
,
title
:
'
纯文字
'
,
},
2
:
{
name
:
'
image
'
,
title
:
'
纯图片
'
,
},
3
:
{
name
:
'
music
'
,
title
:
'
音乐
'
,
},
4
:
{
name
:
'
video
'
,
title
:
'
视频
'
,
},
5
:
{
name
:
'
miniProgram
'
,
title
:
'
小程序
'
,
},
}
const
parseParams
=
<
T
extends
Data
>
(
args
:
UniApp
.
ShareOptions
):
T
|
string
=>
{
args
.
type
=
args
.
type
||
0
let
{
provider
,
type
,
title
,
summary
:
content
,
href
,
imageUrl
,
mediaUrl
:
media
,
scene
,
miniProgram
,
}
=
args
if
(
typeof
imageUrl
===
'
string
'
&&
imageUrl
)
{
imageUrl
=
getRealPath
(
imageUrl
)
}
const
shareType
=
TYPES
[
type
]
if
(
shareType
)
{
const
sendMsg
=
{
provider
,
type
:
shareType
.
name
,
title
,
content
,
href
,
pictures
:
[
imageUrl
],
thumbs
:
imageUrl
?
[
imageUrl
]
:
undefined
,
media
,
miniProgram
,
extra
:
{
scene
,
},
}
if
(
provider
===
'
weixin
'
&&
(
type
===
1
||
type
===
2
))
{
delete
sendMsg
.
thumbs
}
return
sendMsg
as
unknown
as
T
}
return
'
分享参数 type 不正确
'
}
const
sendShareMsg
=
function
(
service
:
PlusShareShareService
,
params
:
Data
,
resolve
:
(
args
?:
any
)
=>
void
,
reject
:
(
errMsg
:
string
,
errRes
?:
any
)
=>
void
,
method
=
'
share
'
)
{
const
errorCallback
=
warpPlusErrorCallback
(
reject
)
service
.
send
(
params
,
()
=>
{
resolve
()
},
errorCallback
)
}
export
const
share
=
defineAsyncApi
<
API_TYPE_SHARE
>
(
API_SHREA
,
(
params
,
{
resolve
,
reject
})
=>
{
const
res
=
parseParams
<
typeof
params
>
(
params
)
const
errorCallback
=
warpPlusErrorCallback
(
reject
)
if
(
typeof
res
===
'
string
'
)
{
return
reject
(
res
)
}
else
{
params
=
res
}
plus
.
share
.
getServices
((
services
)
=>
{
const
service
=
services
.
find
(({
id
})
=>
id
===
params
.
provider
)
if
(
!
service
)
{
reject
(
'
service not found
'
)
}
else
{
if
(
service
.
authenticated
)
{
sendShareMsg
(
service
,
params
,
resolve
,
reject
)
}
else
{
service
.
authorize
(
()
=>
sendShareMsg
(
service
,
params
,
resolve
,
reject
),
errorCallback
)
}
}
},
errorCallback
)
},
ShareProtocols
,
SahreOptions
)
export
const
shareWithSystem
=
defineAsyncApi
<
API_TYPE_SHARE_WITH_SYSTEM
>
(
API_SHARE_WITH_SYSTEM
,
({
type
,
imageUrl
,
summary
,
href
},
{
resolve
,
reject
})
=>
{
const
errorCallback
=
warpPlusErrorCallback
(
reject
)
if
(
typeof
imageUrl
===
'
string
'
&&
imageUrl
)
{
imageUrl
=
getRealPath
(
imageUrl
)
}
plus
.
share
.
sendWithSystem
(
{
type
,
pictures
:
imageUrl
?
[
imageUrl
]
:
undefined
,
content
:
summary
,
href
,
},
()
=>
resolve
(),
errorCallback
)
},
ShareWithSystemProtocols
,
ShareWithSystemOptions
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录