Skip to content

Commit 0e41602

Browse files
committed
now even user chooses s3 domain in public cloud, saveContent still uses kodo api & now it gives tips for editing with cdn domain
1 parent 0d57521 commit 0e41602

File tree

7 files changed

+52
-45
lines changed

7 files changed

+52
-45
lines changed

app/components/services/domains.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ angular.module("web").factory("Domains", [
44
"$translate",
55
"AuthInfo",
66
"QiniuClient",
7-
function(
7+
function (
88
$q,
99
$timeout,
1010
$translate,
1111
AuthInfo,
1212
QiniuClient,
13-
) {
13+
) {
1414
const T = $translate.instant,
15-
{ KODO_MODE, S3_MODE } = require('kodo-s3-adapter-sdk');
15+
{ KODO_MODE, S3_MODE } = require('kodo-s3-adapter-sdk');
1616

1717
class S3Domain {
1818
constructor(region, bucket) {
@@ -48,8 +48,8 @@ angular.module("web").factory("Domains", [
4848
}
4949

5050
saveContent(key, content, opt) {
51-
const newOpt = Object.assign({}, opt, { preferS3Adapter: true });
52-
return QiniuClient.saveContent(this.region, this.bucket, key, content, this.toQiniuDomain(), newOpt);
51+
const getOpt = Object.assign({}, opt, { preferS3Adapter: true });
52+
return QiniuClient.saveContent(this.region, this.bucket, key, content, this.toQiniuDomain(), getOpt, opt);
5353
}
5454

5555
deadlineRequired() {
@@ -96,8 +96,8 @@ angular.module("web").factory("Domains", [
9696
}
9797

9898
saveContent(key, content, opt) {
99-
const newOpt = Object.assign({}, opt, { preferKodoAdapter: true });
100-
return QiniuClient.saveContent(this.region, this.bucket, key, content, this.toQiniuDomain(), newOpt);
99+
const getOpt = Object.assign({}, opt, { preferKodoAdapter: true });
100+
return QiniuClient.saveContent(this.region, this.bucket, key, content, this.toQiniuDomain(), getOpt, opt);
101101
}
102102

103103
deadlineRequired() {

app/components/services/qiniu-client.js

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ angular.module('web').factory('QiniuClient', [
88
'Config',
99
'AuthInfo',
1010
'settingsSvs',
11-
function($q, $rootScope, $translate, $timeout, $state, Toast, Config, AuthInfo, settingsSvs) {
11+
function ($q, $rootScope, $translate, $timeout, $state, Toast, Config, AuthInfo, settingsSvs) {
1212
const { Qiniu, Region, KODO_MODE, S3_MODE, RegionService } = require('kodo-s3-adapter-sdk'),
13-
path = require('path'),
14-
{ Semaphore } = require('semaphore-promise'),
15-
T = $translate.instant,
16-
kodoAdaptersCache = {},
17-
s3AdaptersCache = {},
18-
regionServicesCache = {};
13+
path = require('path'),
14+
{ Semaphore } = require('semaphore-promise'),
15+
T = $translate.instant,
16+
kodoAdaptersCache = {},
17+
s3AdaptersCache = {},
18+
regionServicesCache = {};
1919

2020
return {
2121
isQueryRegionAPIAvaiable: isQueryRegionAPIAvaiable,
@@ -210,7 +210,7 @@ angular.module('web').factory('QiniuClient', [
210210

211211
function headFile(region, bucket, key, opt) {
212212
let promise = getDefaultClient(opt)
213-
.getObjectInfo(region, { bucket: bucket, key: key });
213+
.getObjectInfo(region, { bucket: bucket, key: key });
214214
if (!opt.ignoreError) {
215215
promise = promise.catch((err) => {
216216
handleError(err);
@@ -232,12 +232,11 @@ angular.module('web').factory('QiniuClient', [
232232
});
233233
}
234234

235-
function saveContent(region, bucket, key, content, domain, opt) {
235+
function saveContent(region, bucket, key, content, domain, getOpt, putOpt) {
236236
return new Promise((resolve, reject) => {
237-
const client = getDefaultClient(opt);
238-
client.getObjectHeader(region, { bucket: bucket, key: key }, domain).then((headers) => {
237+
getDefaultClient(getOpt).getObjectHeader(region, { bucket: bucket, key: key }, domain).then((headers) => {
239238
const basename = path.basename(key);
240-
client.putObject(region, { bucket: bucket, key: key }, Buffer.from(content), basename,
239+
getDefaultClient(putOpt).putObject(region, { bucket: bucket, key: key }, Buffer.from(content), basename,
241240
{ metadata: headers.metadata },
242241
).then(() => { resolve(); }).catch((err) => {
243242
handleError(err);
@@ -592,7 +591,7 @@ angular.module('web').factory('QiniuClient', [
592591
function clientBackendMode(opt) {
593592
const adapterOption = getAdapterOption(opt);
594593
const usePublicCloud = AuthInfo.usePublicCloud();
595-
if (adapterOption.regions && adapterOption.regions.length > 0 && !adapterOption.preferKodoAdapter || adapterOption.preferS3Adapter || !usePublicCloud) {
594+
if (adapterOption.regions && adapterOption.regions.length > 0 && !adapterOption.preferKodoAdapter || adapterOption.preferS3Adapter || !usePublicCloud) {
596595
return S3_MODE;
597596
} else {
598597
return KODO_MODE;
@@ -613,11 +612,11 @@ angular.module('web').factory('QiniuClient', [
613612
}
614613

615614
function getDefaultClient(opt) {
616-
switch(clientBackendMode(opt)) {
617-
case S3_MODE:
618-
return getS3Client(opt);
619-
case KODO_MODE:
620-
return getKodoClient(opt);
615+
switch (clientBackendMode(opt)) {
616+
case S3_MODE:
617+
return getS3Client(opt);
618+
case KODO_MODE:
619+
return getKodoClient(opt);
621620
}
622621
}
623622

@@ -650,18 +649,18 @@ angular.module('web').factory('QiniuClient', [
650649
}
651650

652651
function clearAllCache() {
653-
Object.keys(s3AdaptersCache).forEach((key) => {
654-
s3AdaptersCache[key].clearCache();
655-
delete s3AdaptersCache[key];
656-
});
657-
Object.keys(kodoAdaptersCache).forEach((key) => {
658-
kodoAdaptersCache[key].clearCache();
659-
delete kodoAdaptersCache[key];
660-
});
661-
Object.keys(regionServicesCache).forEach((key) => {
662-
regionServicesCache[key].clearCache();
663-
delete regionServicesCache[key];
664-
});
652+
Object.keys(s3AdaptersCache).forEach((key) => {
653+
s3AdaptersCache[key].clearCache();
654+
delete s3AdaptersCache[key];
655+
});
656+
Object.keys(kodoAdaptersCache).forEach((key) => {
657+
kodoAdaptersCache[key].clearCache();
658+
delete kodoAdaptersCache[key];
659+
});
660+
Object.keys(regionServicesCache).forEach((key) => {
661+
regionServicesCache[key].clearCache();
662+
delete regionServicesCache[key];
663+
});
665664
}
666665

667666
function debugRequest(mode) {
@@ -686,21 +685,21 @@ angular.module('web').factory('QiniuClient', [
686685
}
687686

688687
let requestUrl = undefined, requestMethod = undefined, requestHeaders = undefined,
689-
responseStatusCode = undefined, responseHeaders = undefined, responseInterval = undefined, responseData = undefined, responseError = undefined;
688+
responseStatusCode = undefined, responseHeaders = undefined, responseInterval = undefined, responseData = undefined, responseError = undefined;
690689
if (response) {
691-
responseStatusCode = response.statusCode;
692-
responseHeaders = response.headers;
693-
responseInterval = response.interval;
694-
responseData = response.data;
695-
responseError = response.error;
690+
responseStatusCode = response.statusCode;
691+
responseHeaders = response.headers;
692+
responseInterval = response.interval;
693+
responseData = response.data;
694+
responseError = response.error;
696695
if (response.request) {
697696
requestUrl = response.request.url;
698697
requestMethod = response.request.method;
699698
requestHeaders = response.request.headers;
700699
}
701700
}
702701
console.info('<<', mode, 'REQ_URL:', requestUrl, 'REQ_METHOD:', requestMethod, 'REQ_HEADERS: ', requestHeaders,
703-
'RESP_STATUS:', responseStatusCode, 'RESP_HEADERS:', responseHeaders, 'RESP_INTERVAL:', responseInterval, 'ms RESP_DATA:', responseData, 'RESP_ERROR:', responseError);
702+
'RESP_STATUS:', responseStatusCode, 'RESP_HEADERS:', responseHeaders, 'RESP_INTERVAL:', responseInterval, 'ms RESP_DATA:', responseData, 'RESP_ERROR:', responseError);
704703
};
705704
}
706705

app/main/files/modals/preview/code-modal.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,13 @@ <h4 class="modal-title">
4949
{{'close'|translate}}
5050
</button>
5151

52-
<button ng-if="previewBarVisible && currentUser.privilege!='readOnly'" type="button" class="pull-right btn btn-primary btn-sm" ng-click="saveContent()">
52+
<button ng-if="previewBarVisible && currentUser.privilege!='readOnly' && objectInfo.size <= MAX_SIZE" type="button" class="pull-right btn btn-primary btn-sm" ng-click="saveContent()">
5353
<i class="fa fa-save"></i>
5454
<!-- 保存 -->
5555
{{'save'|translate}}
5656
</button>
57+
58+
<div ng-if="previewBarVisible && currentUser.privilege!='readOnly' && objectInfo.size <= MAX_SIZE && !domain.default()" class="text-right pull-right small" style="display: inline-block; position: relative; height: 30px; width: 500px;">
59+
<p style="display: inline-block; margin: 0; width: 500px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">{{'preview.should_not_use_cdn_domain_to_edit'|translate}}</p>
60+
</div>
5761
</div>

app/main/files/modals/preview/code-modal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ angular.module('web')
1010
fileType: fileType,
1111
qiniuClientOpt: qiniuClientOpt,
1212
afterCheckSuccess: afterCheckSuccess,
13+
domain: selectedDomain.domain,
1314

1415
previewBarVisible: false,
1516
showFn: showFn,

node/i18n/en-US.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ module.exports = {
331331
"cannot.preview": "Can not preview",
332332
"cannot.preview.this.file": "Can not preview this file.",
333333
"tryto.open.as.textfile": "Try to open as a text file",
334+
"preview.should_not_use_cdn_domain_to_edit": "If you're going to edit the file, it is recommended not to use a customized CDN domain (with caching mechanism) to get the latest file content",
334335

335336
save: "Save",
336337
size: "Size",

node/i18n/ja-JP.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ module.exports = {
330330
"cannot.preview": "プレビューできません",
331331
"cannot.preview.this.file": "このファイルをプレビューできません。",
332332
"tryto.open.as.textfile": "テキストファイルとして開こうとする",
333+
"preview.should_not_use_cdn_domain_to_edit": "ファイルを編集する場合は、カスタマイズされたCDNドメイン(キャッシュメカニズムを使用)を使用して最新のファイルコンテンツを取得しないことをお勧めします。",
333334

334335
save: "セーブ",
335336
size: "サイズ",

node/i18n/zh-CN.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ module.exports = {
331331
"cannot.preview": "无法预览",
332332
"cannot.preview.this.file": "该文件类型无法预览。",
333333
"tryto.open.as.textfile": "尝试作为文本文件打开",
334+
"preview.should_not_use_cdn_domain_to_edit": "编辑文件,建议不要使用自定义 CDN 域名(有缓存机制),以获取最新的文件内容",
334335

335336
save: "保存",
336337
size: "大小",

0 commit comments

Comments
 (0)