@aochuang/client-sdk 1.0.296 → 1.0.297

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,7 @@
15
15
  </ui-radio-group>
16
16
  </div>
17
17
  <div class="sdk-chat-control-image-dragable-confirm__preview">
18
- <ui-image :src="innerSrc" width="100%" height="100%" :enable-thumbnail="false"></ui-image>
18
+ <ui-image :src="previewSrc" width="100%" height="100%" :enable-thumbnail="false"></ui-image>
19
19
  </div>
20
20
  <div class="sdk-chat-control-image-dragable-confirm__text">
21
21
  <template v-if="currentType === 'thumb'">
@@ -57,7 +57,9 @@ export default {
57
57
  data () {
58
58
  return {
59
59
  visible: true,
60
- currentType: 'thumb'
60
+ currentType: 'thumb',
61
+ base64Src: null,
62
+ base64SrcMap: {}
61
63
  }
62
64
  },
63
65
  computed: {
@@ -69,9 +71,59 @@ export default {
69
71
  src = getNewImageSrc(src)
70
72
  }
71
73
  return formatOssPath(src)
74
+ },
75
+ previewSrc () {
76
+ return this.base64Src || this.innerSrc
77
+ }
78
+ },
79
+ watch: {
80
+ innerSrc: {
81
+ immediate: true,
82
+ handler () {
83
+ this.transformImageToBase64()
84
+ }
72
85
  }
73
86
  },
74
87
  methods: {
88
+ transformImageToBase64 () {
89
+ const src = this.innerSrc
90
+ this.base64Src = this.base64SrcMap[src] || null
91
+ if (!src || this.base64Src || /^data:/i.test(src) || /^blob:/i.test(src)) {
92
+ return
93
+ }
94
+ const transformId = Symbol('transformImageToBase64')
95
+ this._transformImageToBase64Id = transformId
96
+ this.loadImageDataURL(src).then((dataURL) => {
97
+ if (this._transformImageToBase64Id !== transformId) {
98
+ return
99
+ }
100
+ this.$set(this.base64SrcMap, src, dataURL)
101
+ this.base64Src = dataURL
102
+ }).catch(() => {
103
+ if (this._transformImageToBase64Id === transformId) {
104
+ this.base64Src = null
105
+ }
106
+ })
107
+ },
108
+ loadImageDataURL (src) {
109
+ return new Promise((resolve, reject) => {
110
+ const xhr = new XMLHttpRequest()
111
+ xhr.open('GET', src, true)
112
+ xhr.responseType = 'blob'
113
+ xhr.onload = () => {
114
+ if (xhr.status < 200 || xhr.status >= 300) {
115
+ reject(new Error(`load image failed: ${xhr.status}`))
116
+ return
117
+ }
118
+ const reader = new FileReader()
119
+ reader.onload = () => resolve(reader.result)
120
+ reader.onerror = reject
121
+ reader.readAsDataURL(xhr.response)
122
+ }
123
+ xhr.onerror = reject
124
+ xhr.send()
125
+ })
126
+ },
75
127
  handleCancelClick () {
76
128
  if (this.loading) {
77
129
  return
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aochuang/client-sdk",
3
- "version": "1.0.296",
3
+ "version": "1.0.297",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"