184 lines
3.9 KiB
JavaScript
184 lines
3.9 KiB
JavaScript
import { createSelector } from 'reselect';
|
|
import { parseQueryParams } from 'util/query_params';
|
|
import lbryuri from 'lbryuri';
|
|
|
|
export const _selectState = state => state.app || {};
|
|
|
|
export const selectIsLoaded = createSelector(
|
|
_selectState,
|
|
state => state.isLoaded
|
|
);
|
|
|
|
export const selectCurrentPath = createSelector(
|
|
_selectState,
|
|
state => state.currentPath
|
|
);
|
|
|
|
export const selectCurrentPage = createSelector(selectCurrentPath, path => {
|
|
return path.replace(/^\//, '').split('?')[0];
|
|
});
|
|
|
|
export const selectCurrentParams = createSelector(selectCurrentPath, path => {
|
|
if (path === undefined) return {};
|
|
if (!path.match(/\?/)) return {};
|
|
|
|
return parseQueryParams(path.split('?')[1]);
|
|
});
|
|
|
|
export const selectPageTitle = createSelector(
|
|
selectCurrentPage,
|
|
selectCurrentParams,
|
|
(page, params) => {
|
|
switch (page) {
|
|
case 'settings':
|
|
case 'help':
|
|
case 'report':
|
|
case 'wallet':
|
|
case 'send':
|
|
case 'receive':
|
|
case 'rewards':
|
|
case 'start':
|
|
case 'publish':
|
|
case 'help':
|
|
case 'developer':
|
|
return __(page.charAt(0).toUpperCase() + page.slice(1));
|
|
case 'search':
|
|
return params.query
|
|
? __('Search results for %s', params.query)
|
|
: __('Search');
|
|
case 'show':
|
|
return lbryuri.normalize(params.uri);
|
|
case 'downloaded':
|
|
return __('Downloads & Purchases');
|
|
case 'published':
|
|
return __('Publishes');
|
|
case 'discover':
|
|
return __('Home');
|
|
default:
|
|
return '';
|
|
}
|
|
}
|
|
);
|
|
|
|
export const selectPlatform = createSelector(
|
|
_selectState,
|
|
state => state.platform
|
|
);
|
|
|
|
export const selectUpdateUrl = createSelector(selectPlatform, platform => {
|
|
switch (platform) {
|
|
case 'darwin':
|
|
return 'https://lbry.io/get/lbry.dmg';
|
|
case 'linux':
|
|
return 'https://lbry.io/get/lbry.deb';
|
|
case 'win32':
|
|
return 'https://lbry.io/get/lbry.exe';
|
|
default:
|
|
throw 'Unknown platform';
|
|
}
|
|
});
|
|
|
|
export const selectVersion = createSelector(_selectState, state => {
|
|
return state.version;
|
|
});
|
|
|
|
export const selectUpgradeFilename = createSelector(
|
|
selectPlatform,
|
|
selectVersion,
|
|
(platform, version) => {
|
|
switch (platform) {
|
|
case 'darwin':
|
|
return `LBRY_${version}.dmg`;
|
|
case 'linux':
|
|
return `LBRY_${version}_amd64.deb`;
|
|
case 'win32':
|
|
return `LBRY_${version}.exe`;
|
|
default:
|
|
throw 'Unknown platform';
|
|
}
|
|
}
|
|
);
|
|
|
|
export const selectCurrentModal = createSelector(
|
|
_selectState,
|
|
state => state.modal
|
|
);
|
|
|
|
export const selectDownloadProgress = createSelector(
|
|
_selectState,
|
|
state => state.downloadProgress
|
|
);
|
|
|
|
export const selectDownloadComplete = createSelector(
|
|
_selectState,
|
|
state => state.upgradeDownloadCompleted
|
|
);
|
|
|
|
export const selectHeaderLinks = createSelector(selectCurrentPage, page => {
|
|
switch (page) {
|
|
case 'wallet':
|
|
case 'send':
|
|
case 'receive':
|
|
case 'rewards':
|
|
return {
|
|
wallet: __('Overview'),
|
|
send: __('Send'),
|
|
receive: __('Receive'),
|
|
rewards: __('Rewards')
|
|
};
|
|
case 'downloaded':
|
|
case 'published':
|
|
return {
|
|
downloaded: __('Downloaded'),
|
|
published: __('Published')
|
|
};
|
|
case 'settings':
|
|
case 'help':
|
|
return {
|
|
settings: __('Settings'),
|
|
help: __('Help')
|
|
};
|
|
default:
|
|
return null;
|
|
}
|
|
});
|
|
|
|
export const selectUpgradeSkipped = createSelector(
|
|
_selectState,
|
|
state => state.upgradeSkipped
|
|
);
|
|
|
|
export const selectUpgradeDownloadPath = createSelector(
|
|
_selectState,
|
|
state => state.downloadPath
|
|
);
|
|
|
|
export const selectUpgradeDownloadItem = createSelector(
|
|
_selectState,
|
|
state => state.downloadItem
|
|
);
|
|
|
|
export const selectModalExtraContent = createSelector(
|
|
_selectState,
|
|
state => state.modalExtraContent
|
|
);
|
|
|
|
export const selectDaemonReady = createSelector(
|
|
_selectState,
|
|
state => state.daemonReady
|
|
);
|
|
|
|
export const selectObscureNsfw = createSelector(
|
|
_selectState,
|
|
state => !!state.obscureNsfw
|
|
);
|
|
|
|
export const selectSnackBar = createSelector(
|
|
_selectState,
|
|
state => state.snackBar || {}
|
|
);
|
|
|
|
export const selectSnackBarSnacks = createSelector(
|
|
selectSnackBar,
|
|
snackBar => snackBar.snacks || []
|
|
);
|