Skip to content

Commit eae5b1a

Browse files
committed
Re-implement share file functionality.
Remove unneeded appCapabilities from kolibri/utils.
1 parent 910f9bb commit eae5b1a

File tree

7 files changed

+46
-42
lines changed

7 files changed

+46
-42
lines changed

kolibri/plugins/learn/assets/src/views/CurrentlyViewedResourceMetadata.vue

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,25 @@
136136
class="download-button"
137137
data-test="download-button"
138138
/>
139+
<KButton
140+
v-if="canShareFile"
141+
:text="learnString('shareFile')"
142+
class="share-button"
143+
@click="shareFile()"
144+
/>
139145
</section>
140146

141147
</template>
142148

143149

144150
<script>
145151
146-
import { ContentLevels } from 'kolibri/constants';
152+
import { ContentNodeKinds, ContentLevels } from 'kolibri/constants';
147153
import camelCase from 'lodash/camelCase';
148-
154+
import client from 'kolibri/client';
155+
import useUser from 'kolibri/composables/useUser';
156+
import urls from 'kolibri/urls';
157+
import pluginData from 'kolibri-plugin-data';
149158
import LearnerNeeds from 'kolibri-constants/labels/Needs';
150159
import DownloadButton from 'kolibri/components/DownloadButton';
151160
import TimeDuration from 'kolibri-common/components/TimeDuration';
@@ -167,6 +176,10 @@
167176
TimeDuration,
168177
},
169178
mixins: [commonCoreStrings, commonLearnStrings],
179+
setup() {
180+
const { isAppContext } = useUser();
181+
return { isAppContext };
182+
},
170183
props: {
171184
canDownloadExternally: {
172185
type: Boolean,
@@ -187,6 +200,13 @@
187200
};
188201
},
189202
computed: {
203+
canShareFile() {
204+
return (
205+
this.isAppContext &&
206+
this.content.kind !== ContentNodeKinds.EXERCISE &&
207+
pluginData.canShareFile
208+
);
209+
},
190210
forBeginners() {
191211
return get(this.content, 'learner_needs', []).includes(LearnerNeeds.FOR_BEGINNERS);
192212
},
@@ -260,6 +280,21 @@
260280
return '-';
261281
}
262282
},
283+
shareFile() {
284+
const urlFunction = urls['kolibri:core:sharefile'];
285+
return client({
286+
url: urlFunction(),
287+
method: 'POST',
288+
data: {
289+
content_node: this.content.id,
290+
message: this.learnString('shareFileMessage', {
291+
title: this.content.title,
292+
topic: this.content.ancestors.slice(-1)[0].title,
293+
copyrightHolder: this.content.license_owner,
294+
}),
295+
},
296+
});
297+
},
263298
},
264299
};
265300
@@ -309,7 +344,8 @@
309344
padding-top: 8px;
310345
}
311346
312-
.download-button {
347+
.download-button,
348+
.share-button {
313349
margin-top: 16px;
314350
}
315351

kolibri/plugins/learn/assets/src/views/commonLearnStrings.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ export const learnStrings = createTranslator('CommonLearnStrings', {
106106
message: 'Share',
107107
context: 'Option to share a specific file from a learning resource.',
108108
},
109+
shareFileMessage: {
110+
message: '"{title}" (in "{topic}"), from {copyrightHolder}',
111+
context: 'Message shared with the default file from a learning resource.',
112+
},
109113
locationsInChannel: {
110114
message: 'Location in {channelname}',
111115
context:

kolibri/plugins/learn/kolibri_plugin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from kolibri.core.auth.constants.user_kinds import ANONYMOUS
44
from kolibri.core.auth.constants.user_kinds import LEARNER
55
from kolibri.core.content.hooks import ContentNodeDisplayHook
6+
from kolibri.core.content.hooks import ShareFileHook
67
from kolibri.core.device.hooks import CheckIsMeteredHook
78
from kolibri.core.device.utils import allow_learner_unassigned_resource_access
89
from kolibri.core.device.utils import get_device_setting
@@ -65,6 +66,7 @@ def plugin_data(self):
6566
"allow_download_on_metered_connection"
6667
),
6768
"canCheckMeteredConnection": CheckIsMeteredHook.is_registered,
69+
"canShareFile": ShareFileHook.is_registered,
6870
"allowGuestAccess": get_device_setting("allow_guest_access"),
6971
"allowLearnerDownloads": get_device_setting(
7072
"allow_learner_download_resources"

packages/kolibri-tools/lib/moduleMapping.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ module.exports = {
149149
},
150150
'kolibri.themeConfig': 'kolibri/styles/themeConfig',
151151
'kolibri.urls': 'kolibri/urls',
152-
'kolibri.utils.appCapabilities': 'kolibri/utils/appCapabilities',
152+
'kolibri.utils.appCapabilities': null, // Redistributed into more specific code where used.
153153
'kolibri.utils.browserInfo': 'kolibri/utils/browserInfo',
154154
'kolibri.utils.bytesForHumans': 'kolibri/uiText/bytesForHumans',
155155
'kolibri.utils.CatchErrors': 'kolibri/utils/CatchErrors',

packages/kolibri/internal/apiSpec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export default {
4848
'kolibri/uiText/notificationStrings': require('kolibri/uiText/notificationStrings'),
4949
'kolibri/urls': require('kolibri/urls'),
5050
'kolibri/utils/CatchErrors': require('kolibri/utils/CatchErrors'),
51-
'kolibri/utils/appCapabilities': require('kolibri/utils/appCapabilities'),
5251
'kolibri/utils/baseClient': require('kolibri/utils/baseClient'),
5352
'kolibri/utils/browserInfo': require('kolibri/utils/browserInfo'),
5453
'kolibri/utils/i18n': require('kolibri/utils/i18n'),

packages/kolibri/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
"./uiText/notificationStrings": "./uiText/notificationStrings",
5656
"./urls": "./urls",
5757
"./utils/CatchErrors": "./utils/CatchErrors",
58-
"./utils/appCapabilities": "./utils/appCapabilities",
5958
"./utils/baseClient": "./utils/baseClient",
6059
"./utils/browserInfo": "./utils/browserInfo",
6160
"./utils/i18n": "./utils/i18n",

packages/kolibri/utils/appCapabilities.js

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)