MOBILE-3811 resource: Remove mimetype icons from resource only on 4.0+

This partially reverts commit 96b172c42c.
main
Pau Ferrer Ocaña 2022-02-23 09:49:06 +01:00
parent 8b67def43c
commit 82419c3f50
3 changed files with 46 additions and 6 deletions

View File

@ -23,6 +23,7 @@ import { CoreConstants, ModPurpose } from '@/core/constants';
import { AddonModForumIndexComponent } from '../../components/index';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleData } from '@features/course/services/course-helper';
import { CoreIonicColorNames } from '@singletons/colors';
/**
* Handler to support forum modules.
@ -58,7 +59,7 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp
const data = await super.getData(module, courseId);
if ('afterlink' in module && !!module.afterlink) {
data.extraBadgeColor = '';
data.extraBadgeColor = undefined;
const match = />(\d+)[^<]+/.exec(module.afterlink);
data.extraBadge = match ? Translate.instant('addon.mod_forum.unreadpostsnumber', { $a : match[1] }) : '';
} else {
@ -112,7 +113,7 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp
}
data.extraBadge = Translate.instant('core.loading');
data.extraBadgeColor = 'light';
data.extraBadgeColor = CoreIonicColorNames.DARK;
await CoreUtils.ignoreErrors(AddonModForum.invalidateForumData(courseId));
@ -120,7 +121,7 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp
// Handle unread posts.
const forum = await AddonModForum.getForum(courseId, moduleId, { siteId });
data.extraBadgeColor = '';
data.extraBadgeColor = undefined;
data.extraBadge = forum.unreadpostscount
? Translate.instant(
'addon.mod_forum.unreadpostsnumber',
@ -129,7 +130,7 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp
: '';
} catch {
// Ignore errors.
data.extraBadgeColor = '';
data.extraBadgeColor = undefined;
data.extraBadge = '';
}
}

View File

@ -20,6 +20,7 @@ import { CoreCourseModuleData } from '@features/course/services/course-helper';
import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@features/course/services/module-delegate';
import { CoreCourseModulePrefetchDelegate } from '@features/course/services/module-prefetch-delegate';
import { CoreFileHelper } from '@services/file-helper';
import { CoreSites } from '@services/sites';
import { CoreMimetypeUtils } from '@services/utils/mimetype';
import { CoreTextUtils } from '@services/utils/text';
import { CoreTimeUtils } from '@services/utils/time';
@ -95,7 +96,14 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
this.getResourceData(module, courseId, handlerData).then((extra) => {
handlerData.extraBadge = extra;
handlerData.extraBadgeColor = '';
return;
}).catch(() => {
// Ignore errors.
});
this.getIconSrc(module).then((icon) => {
handlerData.icon = icon;
return;
}).catch(() => {
@ -214,6 +222,36 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
return extra.join(' ');
}
/**
* @inheritdoc
*/
async getIconSrc(module?: CoreCourseModuleData): Promise<string | undefined> {
if (!module) {
return;
}
if (CoreSites.getCurrentSite()?.isVersionGreaterEqualThan('4.0')) {
return await CoreCourse.getModuleIconSrc(module.modname, module.modicon);
}
let mimetypeIcon = '';
if (module.contentsinfo) {
// No need to use the list of files.
const mimetype = module.contentsinfo.mimetypes[0];
if (mimetype) {
mimetypeIcon = CoreMimetypeUtils.getMimetypeIcon(mimetype);
}
} else if (module.contents && module.contents[0]) {
const files = module.contents;
const file = files[0];
mimetypeIcon = CoreMimetypeUtils.getFileIcon(file.filename || '');
}
return await CoreCourse.getModuleIconSrc(module.modname, module.modicon, mimetypeIcon);
}
/**
* @inheritdoc
*/

View File

@ -25,6 +25,7 @@ import { CoreSites } from '@services/sites';
import { makeSingleton } from '@singletons';
import { CoreCourseModuleData } from './course-helper';
import { CoreNavigationOptions } from '@services/navigator';
import { CoreIonicColorNames } from '@singletons/colors';
/**
* Interface that all course module handlers must implement.
@ -146,7 +147,7 @@ export interface CoreCourseModuleHandlerData {
/**
* The color of the extra badge. Default: primary.
*/
extraBadgeColor?: string;
extraBadgeColor?: CoreIonicColorNames;
/**
* Whether to display a button to download/refresh the module if it's downloadable.