FEATURE: adds plugin sharing api
This commit is contained in:
parent
4e0c06a0b1
commit
eddcb07f03
|
@ -26,9 +26,10 @@ import { addGTMPageChangedCallback } from 'discourse/lib/page-tracker';
|
||||||
import { registerCustomAvatarHelper } from 'discourse/helpers/user-avatar';
|
import { registerCustomAvatarHelper } from 'discourse/helpers/user-avatar';
|
||||||
import { disableNameSuppression } from 'discourse/widgets/poster-name';
|
import { disableNameSuppression } from 'discourse/widgets/poster-name';
|
||||||
import { registerCustomPostMessageCallback as registerCustomPostMessageCallback1 } from 'discourse/controllers/topic';
|
import { registerCustomPostMessageCallback as registerCustomPostMessageCallback1 } from 'discourse/controllers/topic';
|
||||||
|
import Sharing from 'discourse/lib/sharing';
|
||||||
|
|
||||||
// If you add any methods to the API ensure you bump up this number
|
// If you add any methods to the API ensure you bump up this number
|
||||||
const PLUGIN_API_VERSION = '0.8.22';
|
const PLUGIN_API_VERSION = '0.8.23';
|
||||||
|
|
||||||
class PluginApi {
|
class PluginApi {
|
||||||
constructor(version, container) {
|
constructor(version, container) {
|
||||||
|
@ -710,6 +711,21 @@ class PluginApi {
|
||||||
addGTMPageChangedCallback(fn) {
|
addGTMPageChangedCallback(fn) {
|
||||||
addGTMPageChangedCallback(fn);
|
addGTMPageChangedCallback(fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Registers a function that can add a new sharing source
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* // read /discourse/lib/sharing.js.es6 for options
|
||||||
|
* addSharingSource(options)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
addSharingSource(options) {
|
||||||
|
Sharing.addSharingId(options.id);
|
||||||
|
Sharing.addSource(options);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let _pluginv01;
|
let _pluginv01;
|
||||||
|
|
|
@ -26,20 +26,37 @@
|
||||||
```
|
```
|
||||||
**/
|
**/
|
||||||
|
|
||||||
var _sources = {};
|
let _sources = {};
|
||||||
|
let _customSharingIds = [];
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
// allows to by pass site settings and add a sharing id through plugin api
|
||||||
|
// useful for theme components for example when only few users want to add
|
||||||
|
// sharing to a specific third party
|
||||||
|
addSharingId(id) {
|
||||||
|
_customSharingIds.push(id);
|
||||||
|
},
|
||||||
|
|
||||||
addSource(source) {
|
addSource(source) {
|
||||||
// backwards compatibility for plugins
|
// backwards compatibility for plugins
|
||||||
if (source.faIcon) {
|
if (source.faIcon) {
|
||||||
source.icon = source.faIcon.replace('fa-', '');
|
source.icon = source.faIcon.replace("fa-", "");
|
||||||
delete source.faIcon;
|
delete source.faIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sources[source.id] = source;
|
_sources[source.id] = source;
|
||||||
},
|
},
|
||||||
|
|
||||||
activeSources(linksSetting) {
|
activeSources(linksSetting = "") {
|
||||||
return linksSetting.split('|').map(s => _sources[s]).compact();
|
return linksSetting
|
||||||
|
.split("|")
|
||||||
|
.concat(_customSharingIds)
|
||||||
|
.map(s => _sources[s])
|
||||||
|
.compact();
|
||||||
|
},
|
||||||
|
|
||||||
|
_reset() {
|
||||||
|
_sources = {};
|
||||||
|
_customSharingIds = [];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
import Sharing from "discourse/lib/sharing";
|
||||||
|
|
||||||
|
QUnit.module("lib:sharing", {
|
||||||
|
beforeEach() {
|
||||||
|
Sharing._reset();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test("addSource", assert => {
|
||||||
|
const sharingSettings = "facebook|twitter";
|
||||||
|
|
||||||
|
assert.blank(Sharing.activeSources(sharingSettings));
|
||||||
|
|
||||||
|
Sharing.addSource({
|
||||||
|
id: "facebook"
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(Sharing.activeSources(sharingSettings).length, 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test("addSharingId", assert => {
|
||||||
|
const sharingSettings = "";
|
||||||
|
|
||||||
|
assert.blank(Sharing.activeSources(sharingSettings));
|
||||||
|
|
||||||
|
Sharing.addSource({
|
||||||
|
id: "new-source"
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.blank(
|
||||||
|
Sharing.activeSources(sharingSettings),
|
||||||
|
"it doesn’t activate a source not in settings"
|
||||||
|
);
|
||||||
|
|
||||||
|
Sharing.addSharingId("new-source");
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
Sharing.activeSources(sharingSettings).length,
|
||||||
|
1,
|
||||||
|
"it adds sharing id to existing sharing settings"
|
||||||
|
);
|
||||||
|
});
|
Loading…
Reference in New Issue