MOBILE-3394 utils: Manage store links
parent
636906e522
commit
27ceabde62
|
@ -94,5 +94,12 @@
|
||||||
"statusbarlighttextremotetheme": true,
|
"statusbarlighttextremotetheme": true,
|
||||||
"enableanalytics": false,
|
"enableanalytics": false,
|
||||||
"forceColorScheme": "",
|
"forceColorScheme": "",
|
||||||
"webviewscheme": "moodleappfs"
|
"webviewscheme": "moodleappfs",
|
||||||
|
"appstores": {
|
||||||
|
"android": "com.moodle.moodlemobile",
|
||||||
|
"ios": "id633359593",
|
||||||
|
"windows": "moodle-desktop/9p9bwvhdc8c8",
|
||||||
|
"mac": "id1255924440",
|
||||||
|
"linux": "https://download.moodle.org/desktop/download.php?platform=linux&arch=64"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { Injectable } from '@angular/core';
|
||||||
import { Location } from '@angular/common';
|
import { Location } from '@angular/common';
|
||||||
import { Platform, AlertController, NavController, NavOptions } from 'ionic-angular';
|
import { Platform, AlertController, NavController, NavOptions } from 'ionic-angular';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreAppProvider } from '@providers/app';
|
import { CoreAppProvider, CoreStoreConfig } from '@providers/app';
|
||||||
import { CoreConfigProvider } from '@providers/config';
|
import { CoreConfigProvider } from '@providers/config';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreInitDelegate } from '@providers/init';
|
import { CoreInitDelegate } from '@providers/init';
|
||||||
|
@ -1180,13 +1180,7 @@ export class CoreLoginHelperProvider {
|
||||||
* @param message The warning message.
|
* @param message The warning message.
|
||||||
*/
|
*/
|
||||||
protected showWorkplaceNoticeModal(message: string): void {
|
protected showWorkplaceNoticeModal(message: string): void {
|
||||||
let link;
|
const link = this.appProvider.getAppStoreUrl({android: 'com.moodle.workplace', ios: 'id1470929705' });
|
||||||
|
|
||||||
if (this.platform.is('android')) {
|
|
||||||
link = 'market://details?id=com.moodle.workplace';
|
|
||||||
} else if (this.platform.is('ios')) {
|
|
||||||
link = 'itms-apps://itunes.apple.com/app/id1470929705';
|
|
||||||
}
|
|
||||||
|
|
||||||
this.showDownloadAppNoticeModal(message, link);
|
this.showDownloadAppNoticeModal(message, link);
|
||||||
}
|
}
|
||||||
|
@ -1197,20 +1191,12 @@ export class CoreLoginHelperProvider {
|
||||||
* @param message The warning message.
|
* @param message The warning message.
|
||||||
*/
|
*/
|
||||||
protected showMoodleAppNoticeModal(message: string): void {
|
protected showMoodleAppNoticeModal(message: string): void {
|
||||||
let link;
|
const storesConfig: CoreStoreConfig = CoreConfigConstants.appstores;
|
||||||
|
storesConfig.desktop = 'https://download.moodle.org/desktop/';
|
||||||
|
storesConfig.mobile = 'https://download.moodle.org/mobile/';
|
||||||
|
storesConfig.default = 'https://download.moodle.org/mobile/';
|
||||||
|
|
||||||
if (this.appProvider.isWindows()) {
|
const link = this.appProvider.getAppStoreUrl(storesConfig);
|
||||||
link = 'https://download.moodle.org/desktop/download.php?platform=windows';
|
|
||||||
} else if (this.appProvider.isLinux()) {
|
|
||||||
link = 'https://download.moodle.org/desktop/download.php?platform=linux&arch=' +
|
|
||||||
(this.appProvider.is64Bits() ? '64' : '32');
|
|
||||||
} else if (this.appProvider.isMac()) {
|
|
||||||
link = 'itms-apps://itunes.apple.com/app/id1255924440';
|
|
||||||
} else if (this.platform.is('android')) {
|
|
||||||
link = 'market://details?id=com.moodle.moodlemobile';
|
|
||||||
} else if (this.platform.is('ios')) {
|
|
||||||
link = 'itms-apps://itunes.apple.com/app/id633359593';
|
|
||||||
}
|
|
||||||
|
|
||||||
this.showDownloadAppNoticeModal(message, link);
|
this.showDownloadAppNoticeModal(message, link);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,51 @@ export interface CoreRedirectData {
|
||||||
timemodified?: number;
|
timemodified?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store config data.
|
||||||
|
*/
|
||||||
|
export interface CoreStoreConfig {
|
||||||
|
/**
|
||||||
|
* ID of the Apple store where the desktop Mac app is uploaded.
|
||||||
|
*/
|
||||||
|
mac?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID of the Windows store where the desktop Windows app is uploaded.
|
||||||
|
*/
|
||||||
|
windows?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Url with the desktop linux download link.
|
||||||
|
*/
|
||||||
|
linux?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fallback URL when the desktop options is not set.
|
||||||
|
*/
|
||||||
|
desktop?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID of the Apple store where the mobile iOS app is uploaded.
|
||||||
|
*/
|
||||||
|
ios?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID of the Google play store where the android app is uploaded.
|
||||||
|
*/
|
||||||
|
android?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fallback URL when the mobile options is not set.
|
||||||
|
*/
|
||||||
|
mobile?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fallback URL when the other fallbacks options are not set.
|
||||||
|
*/
|
||||||
|
default?: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* App DB schema and migration function.
|
* App DB schema and migration function.
|
||||||
*/
|
*/
|
||||||
|
@ -255,6 +300,44 @@ export class CoreAppProvider {
|
||||||
return this.appCtrl.getRootNavs()[0];
|
return this.appCtrl.getRootNavs()[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get app store URL.
|
||||||
|
*
|
||||||
|
* @param storesConfig Config params to send the user to the right place.
|
||||||
|
* @return Store URL.
|
||||||
|
*/
|
||||||
|
getAppStoreUrl(storesConfig: CoreStoreConfig): string {
|
||||||
|
if (this.isMac() && storesConfig.mac) {
|
||||||
|
return 'itms-apps://itunes.apple.com/app/' + storesConfig.mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isWindows() && storesConfig.windows) {
|
||||||
|
return 'https://www.microsoft.com/p/' + storesConfig.windows;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isLinux() && storesConfig.linux) {
|
||||||
|
return storesConfig.linux;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isDesktop() && storesConfig.desktop) {
|
||||||
|
return storesConfig.desktop;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isIOS() && storesConfig.ios) {
|
||||||
|
return 'itms-apps://itunes.apple.com/app/' + storesConfig.ios;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isAndroid() && storesConfig.android) {
|
||||||
|
return 'market://details?id=' + storesConfig.android;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isMobile() && storesConfig.mobile) {
|
||||||
|
return storesConfig.mobile;
|
||||||
|
}
|
||||||
|
|
||||||
|
return storesConfig.default || null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the user agent is controlled by automation. I.e. Behat testing.
|
* Returns whether the user agent is controlled by automation. I.e. Behat testing.
|
||||||
*
|
*
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
import { Injectable, Injector } from '@angular/core';
|
import { Injectable, Injector } from '@angular/core';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreAppProvider, CoreAppSchema } from './app';
|
import { CoreAppProvider, CoreAppSchema, CoreStoreConfig } from './app';
|
||||||
import { CoreEventsProvider } from './events';
|
import { CoreEventsProvider } from './events';
|
||||||
import { CoreLoggerProvider } from './logger';
|
import { CoreLoggerProvider } from './logger';
|
||||||
import { CoreSitesFactoryProvider } from './sites-factory';
|
import { CoreSitesFactoryProvider } from './sites-factory';
|
||||||
|
@ -1001,19 +1001,15 @@ export class CoreSitesProvider {
|
||||||
appVersion = this.convertVersionName(CoreConfigConstants.versionname);
|
appVersion = this.convertVersionName(CoreConfigConstants.versionname);
|
||||||
|
|
||||||
if (requiredVersion > appVersion) {
|
if (requiredVersion > appVersion) {
|
||||||
let downloadUrl = '';
|
const storesConfig: CoreStoreConfig = {
|
||||||
|
android: config.tool_mobile_androidappid || false,
|
||||||
|
ios: config.tool_mobile_iosappid || false,
|
||||||
|
desktop: config.tool_mobile_setuplink || 'https://download.moodle.org/desktop/',
|
||||||
|
mobile: config.tool_mobile_setuplink || 'https://download.moodle.org/mobile/',
|
||||||
|
default: config.tool_mobile_setuplink,
|
||||||
|
};
|
||||||
|
|
||||||
if (this.appProvider.isAndroid() && config.tool_mobile_androidappid) {
|
const downloadUrl = this.appProvider.getAppStoreUrl(storesConfig);
|
||||||
downloadUrl = 'market://details?id=' + config.tool_mobile_androidappid;
|
|
||||||
} else if (this.appProvider.isIOS() && config.tool_mobile_iosappid) {
|
|
||||||
downloadUrl = 'itms-apps://itunes.apple.com/app/id' + config.tool_mobile_iosappid;
|
|
||||||
} else if (config.tool_mobile_setuplink) {
|
|
||||||
downloadUrl = config.tool_mobile_setuplink;
|
|
||||||
} else if (this.appProvider.isMobile()) {
|
|
||||||
downloadUrl = 'https://download.moodle.org/mobile/';
|
|
||||||
} else {
|
|
||||||
downloadUrl = 'https://download.moodle.org/desktop/';
|
|
||||||
}
|
|
||||||
|
|
||||||
siteId = siteId || this.getCurrentSiteId();
|
siteId = siteId || this.getCurrentSiteId();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue