2017-06-06 23:19:12 +02:00
|
|
|
import { createSelector } from "reselect";
|
|
|
|
import { parseQueryParams } from "util/query_params";
|
2017-06-27 20:15:37 +02:00
|
|
|
import lbry from "lbry";
|
2017-06-06 23:19:12 +02:00
|
|
|
import lbryuri from "lbryuri";
|
2017-04-07 07:15:22 +02:00
|
|
|
|
2017-06-06 06:21:55 +02:00
|
|
|
export const _selectState = state => state.app || {};
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectIsLoaded = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.isLoaded
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
2017-04-24 09:25:27 +02:00
|
|
|
export const selectCurrentPath = createSelector(
|
2017-04-07 07:15:22 +02:00
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.currentPath
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-24 09:25:27 +02:00
|
|
|
|
2017-06-06 06:21:55 +02:00
|
|
|
export const selectCurrentPage = createSelector(selectCurrentPath, path => {
|
2017-06-06 23:19:12 +02:00
|
|
|
return path.replace(/^\//, "").split("?")[0];
|
2017-06-06 06:21:55 +02:00
|
|
|
});
|
2017-04-24 09:25:27 +02:00
|
|
|
|
2017-06-06 06:21:55 +02:00
|
|
|
export const selectCurrentParams = createSelector(selectCurrentPath, path => {
|
2017-06-06 23:19:12 +02:00
|
|
|
if (path === undefined) return {};
|
|
|
|
if (!path.match(/\?/)) return {};
|
2017-05-07 14:50:32 +02:00
|
|
|
|
2017-06-06 23:19:12 +02:00
|
|
|
return parseQueryParams(path.split("?")[1]);
|
2017-06-06 06:21:55 +02:00
|
|
|
});
|
2017-05-07 14:50:32 +02:00
|
|
|
|
2017-04-30 18:01:43 +02:00
|
|
|
export const selectPageTitle = createSelector(
|
|
|
|
selectCurrentPage,
|
2017-05-15 05:50:59 +02:00
|
|
|
selectCurrentParams,
|
|
|
|
(page, params) => {
|
2017-05-04 05:44:08 +02:00
|
|
|
switch (page) {
|
2017-06-06 23:19:12 +02:00
|
|
|
case "settings":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Settings");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "report":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Report");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "wallet":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Wallet");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "send":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Send");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "receive":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Receive");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "rewards":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Rewards");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "start":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Start");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "publish":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Publish");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "help":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Help");
|
2017-06-06 23:19:12 +02:00
|
|
|
case "developer":
|
2017-06-22 01:15:24 +02:00
|
|
|
return __("Developer");
|
2017-06-06 23:19:12 +02:00
|
|
|
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");
|
2017-04-30 18:01:43 +02:00
|
|
|
default:
|
2017-06-06 23:19:12 +02:00
|
|
|
return "";
|
2017-05-04 05:44:08 +02:00
|
|
|
}
|
|
|
|
}
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-05-04 05:44:08 +02:00
|
|
|
|
2017-04-07 07:15:22 +02:00
|
|
|
export const selectPlatform = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.platform
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
export const selectUpdateUrl = createSelector(selectPlatform, platform => {
|
2017-06-06 23:19:12 +02:00
|
|
|
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";
|
2017-04-07 07:15:22 +02:00
|
|
|
}
|
2017-06-06 06:21:55 +02:00
|
|
|
});
|
2017-04-07 07:15:22 +02:00
|
|
|
|
2017-06-06 06:21:55 +02:00
|
|
|
export const selectVersion = createSelector(_selectState, state => {
|
2017-06-06 23:19:12 +02:00
|
|
|
return state.version;
|
2017-06-06 06:21:55 +02:00
|
|
|
});
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectUpgradeFilename = createSelector(
|
|
|
|
selectPlatform,
|
|
|
|
selectVersion,
|
|
|
|
(platform, version) => {
|
|
|
|
switch (platform) {
|
2017-06-06 23:19:12 +02:00
|
|
|
case "darwin":
|
2017-06-01 08:52:17 +02:00
|
|
|
return `LBRY_${version}.dmg`;
|
2017-06-06 23:19:12 +02:00
|
|
|
case "linux":
|
2017-04-07 07:15:22 +02:00
|
|
|
return `LBRY_${version}_amd64.deb`;
|
2017-06-06 23:19:12 +02:00
|
|
|
case "win32":
|
2017-06-01 08:52:17 +02:00
|
|
|
return `LBRY_${version}.exe`;
|
2017-04-07 07:15:22 +02:00
|
|
|
default:
|
2017-06-06 23:19:12 +02:00
|
|
|
throw "Unknown platform";
|
2017-04-07 07:15:22 +02:00
|
|
|
}
|
|
|
|
}
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectCurrentModal = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.modal
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectDownloadProgress = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.downloadProgress
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectDownloadComplete = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.upgradeDownloadCompleted
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
export const selectHeaderLinks = createSelector(selectCurrentPage, page => {
|
2017-06-06 23:19:12 +02:00
|
|
|
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;
|
2017-04-07 07:15:22 +02:00
|
|
|
}
|
2017-06-06 06:21:55 +02:00
|
|
|
});
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectUpgradeSkipped = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.upgradeSkipped
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
2017-06-01 08:51:16 +02:00
|
|
|
export const selectUpgradeDownloadPath = createSelector(
|
2017-04-07 07:15:22 +02:00
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.downloadPath
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
|
|
|
export const selectUpgradeDownloadItem = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.downloadItem
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-07 07:15:22 +02:00
|
|
|
|
2017-05-24 23:53:03 +02:00
|
|
|
export const selectModalExtraContent = createSelector(
|
2017-04-07 07:15:22 +02:00
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.modalExtraContent
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-22 15:17:01 +02:00
|
|
|
|
|
|
|
export const selectDaemonReady = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.daemonReady
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-04-29 11:50:29 +02:00
|
|
|
|
2017-06-27 20:15:37 +02:00
|
|
|
/**
|
|
|
|
* Calls to lbry.getClientSetting shouldn't be happening in selector logic, but settings have not
|
|
|
|
* properly been reworked into redux framework. This added as a bug fix to NSFW settings not refreshing.
|
|
|
|
*/
|
|
|
|
export const selectObscureNsfw = () => {
|
|
|
|
return !lbry.getClientSetting("showNsfw");
|
|
|
|
};
|
2017-05-23 09:21:21 +02:00
|
|
|
|
|
|
|
export const selectSnackBar = createSelector(
|
|
|
|
_selectState,
|
2017-06-06 23:19:12 +02:00
|
|
|
state => state.snackBar || {}
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-05-23 09:21:21 +02:00
|
|
|
|
|
|
|
export const selectSnackBarSnacks = createSelector(
|
|
|
|
selectSnackBar,
|
2017-06-06 23:19:12 +02:00
|
|
|
snackBar => snackBar.snacks || []
|
2017-06-06 06:21:55 +02:00
|
|
|
);
|
2017-06-24 10:57:37 +02:00
|
|
|
|
|
|
|
export const selectBadgeNumber = createSelector(
|
|
|
|
_selectState,
|
|
|
|
state => state.badgeNumber
|
|
|
|
);
|