Merge pull request #1843 from ecency/development

3.0.13
This commit is contained in:
Feruz M 2021-01-29 20:58:25 +02:00 committed by GitHub
commit cff1e209bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
187 changed files with 4389 additions and 1737 deletions

View File

@ -2,5 +2,12 @@
"eslint.validate": [
"javascript",
"javascriptreact"
]
],
"java.configuration.updateBuildConfiguration": "interactive",
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
}
}

View File

@ -143,7 +143,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode versionMajor * 10000 + versionMinor * 100 + versionPatch
versionName "3.0.12"
versionName "3.0.13"
resValue "string", "build_config_package", "app.esteem.mobile.android"
multiDexEnabled true
// react-native-image-crop-picker
@ -194,7 +194,6 @@ android {
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
@ -208,7 +207,7 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.facebook.react:react-native:+' // From node_modules
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
implementation 'com.android.support:multidex:2.0.1'
@ -232,4 +231,4 @@ task copyDownloadableDepsToLibs(type: Copy) {
}
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

View File

@ -27,8 +27,7 @@ buildscript {
jcenter()
}
dependencies {
classpath('com.android.tools.build:gradle:3.5.2')
classpath('com.android.tools.build:gradle:4.0.1')
classpath 'com.google.gms:google-services:4.3.3'
classpath 'com.bugsnag:bugsnag-android-gradle-plugin:4.+'
// NOTE: Do not place your application dependencies here; they belong

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -15,11 +15,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.12</string>
<string>3.0.13</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2562</string>
<string>2563</string>
<key>LSRequiresIPhoneOS</key>
<true />
<key>NSAppTransportSecurity</key>

View File

@ -15,10 +15,10 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.12</string>
<string>3.0.13</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2562</string>
<string>2563</string>
</dict>
</plist>

View File

@ -454,6 +454,7 @@
53FB8F8B28F502EE3B240FD6 /* [CP] Copy Pods Resources */,
4436D72554B718932B21C9FD /* [CP-User] [RNFB] Core Configuration */,
58C9F50524CE017800A026DD /* Embed App Extensions */,
05BAAAEE25BF43F80072EA01 /* ShellScript */,
);
buildRules = (
);
@ -692,6 +693,23 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
};
05BAAAEE25BF43F80072EA01 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n";
};
180EA60986CD4BBD6C799872 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -752,7 +770,7 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Ecency/Pods-Ecency-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/QBImagePickerController/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
@ -769,7 +787,7 @@
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
"${PODS_ROOT}/RSKImageCropper/RSKImageCropper/RSKImageCropperStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
@ -790,7 +808,7 @@
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSKImageCropperStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@ -809,7 +827,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
777B3928177A0EE7EA1ABCF9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
@ -1101,10 +1119,10 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Ecency/EcencyDebug.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 2562;
CURRENT_PROJECT_VERSION = 2792;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = 75B6RXTKGT;
HEADER_SEARCH_PATHS = (
@ -1180,7 +1198,7 @@
CODE_SIGN_ENTITLEMENTS = Ecency/Ecency.entitlements;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 2562;
CURRENT_PROJECT_VERSION = 2792;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = 75B6RXTKGT;
HEADER_SEARCH_PATHS = (

View File

@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.12</string>
<string>3.0.13</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>

View File

@ -15,10 +15,10 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.12</string>
<string>3.0.13</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2562</string>
<string>2563</string>
</dict>
</plist>

View File

@ -145,7 +145,6 @@ PODS:
- nanopb/encode (1.30905.0)
- PromisesObjC (1.2.9)
- Protobuf (3.12.0)
- QBImagePickerController (3.4.0)
- RCTRequired (0.61.5)
- RCTTypeSafety (0.61.5):
- FBLazyVector (= 0.61.5)
@ -324,6 +323,10 @@ PODS:
- React
- react-native-receive-sharing-intent (1.0.4):
- React
- react-native-restart (0.0.17):
- React
- react-native-safe-area-context (3.1.9):
- React-Core
- react-native-splash-screen (3.2.0):
- React
- react-native-version-number (0.3.6):
@ -398,11 +401,15 @@ PODS:
- React
- RNIap (3.4.15):
- React
- RNImageCropPicker (0.26.2):
- QBImagePickerController
- RNImageCropPicker (0.35.2):
- React-Core
- React-RCTImage
- RSKImageCropper
- RNImageCropPicker/QBImagePickerController (= 0.35.2)
- TOCropViewController
- RNImageCropPicker/QBImagePickerController (0.35.2):
- React-Core
- React-RCTImage
- TOCropViewController
- RNReanimated (1.13.2):
- React-Core
- RNScreens (2.10.1):
@ -411,13 +418,13 @@ PODS:
- React
- RNVectorIcons (6.7.0):
- React
- RSKImageCropper (2.2.3)
- SDWebImage (5.8.4):
- SDWebImage/Core (= 5.8.4)
- SDWebImage/Core (5.8.4)
- SDWebImageWebPCoder (0.6.1):
- libwebp (~> 1.0)
- SDWebImage/Core (~> 5.7)
- TOCropViewController (2.6.0)
- toolbar-android (0.1.0-rc.2):
- React
- Yoga (1.14.0)
@ -452,6 +459,8 @@ DEPENDENCIES:
- react-native-matomo-sdk (from `../node_modules/react-native-matomo-sdk`)
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
- react-native-receive-sharing-intent (from `../node_modules/react-native-receive-sharing-intent`)
- react-native-restart (from `../node_modules/react-native-restart`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
- react-native-version-number (from `../node_modules/react-native-version-number`)
- react-native-webview (from `../node_modules/react-native-webview`)
@ -506,10 +515,9 @@ SPEC REPOS:
- nanopb
- PromisesObjC
- Protobuf
- QBImagePickerController
- RSKImageCropper
- SDWebImage
- SDWebImageWebPCoder
- TOCropViewController
EXTERNAL SOURCES:
appcenter-analytics:
@ -566,6 +574,10 @@ EXTERNAL SOURCES:
:path: "../node_modules/@react-native-community/netinfo"
react-native-receive-sharing-intent:
:path: "../node_modules/react-native-receive-sharing-intent"
react-native-restart:
:path: "../node_modules/react-native-restart"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
react-native-splash-screen:
:path: "../node_modules/react-native-splash-screen"
react-native-version-number:
@ -661,7 +673,6 @@ SPEC CHECKSUMS:
nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75
Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9
QBImagePickerController: d54cf93db6decf26baf6ed3472f336ef35cae022
RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1
RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320
React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78
@ -677,6 +688,8 @@ SPEC CHECKSUMS:
react-native-matomo-sdk: 025c54f92e1e26a4d0acee7c3f28cb0fc7e4729c
react-native-netinfo: a53b00d949b6456913aaf507d9dba90c4008c611
react-native-receive-sharing-intent: feba0a332a07977549a85aa58b496eb44368366a
react-native-restart: d19a0f8d053d065fe64cd2baebb6487111c77149
react-native-safe-area-context: b6e0e284002381d2ff29fa4fff42b4d8282e3c94
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
react-native-version-number: b415bbec6a13f2df62bf978e85bc0d699462f37f
react-native-webview: 160ac8d6bb974e2933f2de6bb7464a8e934ff31d
@ -701,17 +714,17 @@ SPEC CHECKSUMS:
RNFBMessaging: 3bb7dcf398789ce359a9f6b97b83472a3090f65a
RNGestureHandler: b6b359bb800ae399a9c8b27032bdbf7c18f08a08
RNIap: b4c77c8bc4501203f4b743126a05da23f10f40b4
RNImageCropPicker: 9d1a7eea4f8368fc479cbd2bf26459bd3c74d9aa
RNImageCropPicker: 9e0bf18cf4184a846fed55747c8e622208b39947
RNReanimated: e03f7425cb7a38dcf1b644d680d1bfc91c3337ad
RNScreens: b748efec66e095134c7166ca333b628cd7e6f3e2
RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f
RNVectorIcons: 368d6d8b8301224e5ffb6254191f4f8876c2be0d
RSKImageCropper: a446db0e8444a036b34f3c43db01b2373baa4b2a
SDWebImage: cf6922231e95550934da2ada0f20f2becf2ceba9
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
TOCropViewController: 3105367e808b7d3d886a74ff59bf4804e7d3ab38
toolbar-android: 85f3ef4d691469f2d304e7dee4bca013aa1ba1ff
Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b
PODFILE CHECKSUM: 1f30c7da5061dbc47185442a6ab4a3c95ac48c04
COCOAPODS: 1.10.0
COCOAPODS: 1.9.3

View File

@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>3.0.12</string>
<string>3.0.13</string>
<key>CFBundleVersion</key>
<string>2562</string>
<string>2563</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>

View File

@ -1,6 +1,6 @@
{
"name": "ecency",
"version": "3.0.12",
"version": "3.0.13",
"displayName": "Ecency",
"private": true,
"rnpm": {
@ -27,13 +27,14 @@
},
"dependencies": {
"@babel/runtime": "^7.5.5",
"@ecency/render-helper": "^2.0.11",
"@ecency/render-helper": "^2.0.15",
"@esteemapp/dhive": "0.15.0",
"@esteemapp/react-native-autocomplete-input": "^4.2.1",
"@esteemapp/react-native-modal-popover": "^0.0.15",
"@esteemapp/react-native-multi-slider": "^1.1.0",
"@esteemapp/react-native-render-html": "^4.1.5",
"@esteemapp/react-native-slider": "^0.12.0",
"@gorhom/bottom-sheet": "^2",
"@hiveio/dhive": "^0.14.12",
"@react-native-community/async-storage": "^1.11.0",
"@react-native-community/cameraroll": "^1.3.0",
@ -50,7 +51,7 @@
"appcenter-crashes": "^3.1.0",
"axios": "^0.18.0",
"buffer": "^5.4.3",
"bugsnag-react-native": "^2.23.4",
"bugsnag-react-native": "^2.23.10",
"core-js": "3.6.4",
"crypto-js": "^3.1.9-1",
"currency-symbol-map": "^4.0.4",
@ -73,8 +74,10 @@
"react-native-extended-stylesheet": "^0.10.0",
"react-native-fast-image": "^8.3.2",
"react-native-gesture-handler": "^1.4.1",
"react-native-highlight-words": "^1.0.1",
"react-native-iap": "3.4.15",
"react-native-image-crop-picker": "^0.26.1",
"react-native-image-crop-picker": "^0.35.2",
"react-native-image-size": "^1.1.3",
"react-native-image-zoom-viewer": "^2.2.27",
"react-native-keyboard-aware-scroll-view": "^0.9.1",
"react-native-linear-gradient": "^2.4.2",
@ -87,6 +90,8 @@
"react-native-qrcode-svg": "^6.0.3",
"react-native-reanimated": "^1.3.0",
"react-native-receive-sharing-intent": "ecency/react-native-receive-sharing-intent",
"react-native-restart": "0.0.17",
"react-native-safe-area-context": "^3.1.9",
"react-native-screens": "^2.9.0",
"react-native-scrollable-tab-view": "ecency/react-native-scrollable-tab-view",
"react-native-snap-carousel": "^3.8.0",

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,94 @@
import React, { useEffect, useRef, useState } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { navigate } from '../../../navigation/service';
import { updateCurrentAccount } from '../../../redux/actions/accountAction';
import { isRenderRequired } from '../../../redux/actions/applicationActions';
import { getUserDataWithUsername } from '../../../realm/realm';
import { switchAccount } from '../../../providers/hive/auth';
import AccountsBottomSheet from '../view/accountsBottomSheetView';
import { toggleAccountsBottomSheet } from '../../../redux/actions/uiAction';
const AccountsBottomSheetContainer = ({ navigation }) => {
const dispatch = useDispatch();
const accountsBottomSheetViewRef = useRef();
const isVisibleAccountsBottomSheet = useSelector(
(state) => state.ui.isVisibleAccountsBottomSheet,
);
const currentAccount = useSelector((state) => state.account.currentAccount);
const accounts = useSelector((state) => state.account.otherAccounts);
useEffect(() => {
if (isVisibleAccountsBottomSheet) {
accountsBottomSheetViewRef.current?.showAccountsBottomSheet();
}
}, [isVisibleAccountsBottomSheet]);
const _navigateToRoute = (routeName = null) => {
if (routeName) {
accountsBottomSheetViewRef.current?.closeAccountsBottomSheet();
navigate({ routeName });
}
};
const _switchAccount = async (account = {}) => {
if (account.username !== currentAccount.name) {
_handleSwitch(account);
} else {
accountsBottomSheetViewRef.current?.closeAccountsBottomSheet();
}
};
const _handleSwitch = async (switchingAccount = {}) => {
// Call this dispatch because when we make request, onDismiss is not working
// =========================================================================
accountsBottomSheetViewRef.current?.closeAccountsBottomSheet();
dispatch(toggleAccountsBottomSheet());
// =========================================================================
const accountData = accounts.filter(
(account) => account.username === switchingAccount.username,
)[0];
// control user persist whole data or just username
if (accountData.name) {
accountData.username = accountData.name;
dispatch(updateCurrentAccount(accountData));
dispatch(isRenderRequired(true));
const upToDateCurrentAccount = await switchAccount(accountData.name);
const realmData = await getUserDataWithUsername(accountData.name);
upToDateCurrentAccount.username = upToDateCurrentAccount.name;
upToDateCurrentAccount.local = realmData[0];
dispatch(updateCurrentAccount(upToDateCurrentAccount));
} else {
const _currentAccount = await switchAccount(accountData.username);
const realmData = await getUserDataWithUsername(accountData.username);
_currentAccount.username = _currentAccount.name;
_currentAccount.local = realmData[0];
dispatch(updateCurrentAccount(_currentAccount));
dispatch(isRenderRequired(true));
}
};
return (
<AccountsBottomSheet
ref={accountsBottomSheetViewRef}
accounts={accounts}
currentAccount={currentAccount}
navigateToRoute={_navigateToRoute}
switchAccount={_switchAccount}
/>
);
};
export default AccountsBottomSheetContainer;

View File

@ -0,0 +1,5 @@
import AccountsBottomSheetContainer from './container/accountsBottomSheetContainer';
import AccountsBottomSheet from './view/accountsBottomSheetView';
export { AccountsBottomSheet, AccountsBottomSheetContainer };
export default AccountsBottomSheetContainer;

View File

@ -0,0 +1,144 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
container: {
flex: 1,
padding: 24,
justifyContent: 'center',
backgroundColor: 'grey',
},
contentContainer: {
flex: 1,
alignItems: 'center',
},
backdrop: {
position: 'absolute',
height: '$deviceHeight',
width: '$deviceWidth',
backgroundColor: 'rgba(0, 0, 0, 0.5)',
},
otherUserAvatar: {
borderWidth: 0.1,
borderColor: '$borderColor',
marginLeft: -7,
marginRight: 10,
},
userInfoWrapper: {
alignSelf: 'center',
marginLeft: 15,
width: 120,
},
listItem: {
marginVertical: 15,
},
listItemIcon: {
color: '$iconColor',
fontSize: 20,
marginRight: 5,
width: 20,
},
listItemText: {
color: '$primaryDarkGray',
marginLeft: 12,
alignSelf: 'center',
fontWeight: '500',
fontSize: 14,
flex: 1,
},
buttonText: {
fontSize: 18,
fontFamily: '$primaryFont',
textAlign: 'center',
margin: 10,
color: '$white',
backgroundColor: 'transparent',
},
addAccountWrapper: {
alignSelf: 'flex-end',
justifyContent: 'center',
flex: 1,
flexDirection: 'row',
},
itemWrapper: {
flexDirection: 'row',
marginLeft: 55,
},
versionText: {
textAlign: 'center',
color: '$iconColor',
},
imageBackground: {
width: '100%',
height: '100%',
flexDirection: 'row',
},
iconWrapper: {
width: 32,
height: 32,
borderRadius: 16,
borderColor: 'white',
borderWidth: 1,
alignItems: 'center',
justifyContent: 'center',
},
optionIcon: {
height: 16,
width: 16,
},
accountTile: {
height: 60,
flexDirection: 'row',
paddingHorizontal: 16,
alignItems: 'center',
flex: 1,
justifyContent: 'space-between',
},
nameContainer: {
marginLeft: 8,
},
displayName: {
fontWeight: '600',
fontSize: 16,
color: '$primaryBlack',
},
name: {
color: '$primaryDarkGray',
},
accountsModal: {
backgroundColor: '$primaryBackgroundColor',
flex: 1,
},
handleComponent: {
backgroundColor: '$primaryBackgroundColor',
height: 20,
borderTopLeftRadius: 10,
borderTopRightRadius: 10,
alignItems: 'center',
justifyContent: 'center',
},
handle: {
height: 3,
width: 24,
backgroundColor: '$darkIconColor',
borderRadius: 12,
},
textButton: {
color: '$primaryBlue',
},
buttonContainer: {
height: 50,
justifyContent: 'center',
paddingHorizontal: 16,
},
separator: {
backgroundColor: '$darkIconColor',
height: 0.5,
},
avatarAndNameContainer: {
flexDirection: 'row',
alignItems: 'center',
},
checkIcon: {
color: '$successColor',
},
});

View File

@ -0,0 +1,119 @@
import React, { useCallback, useMemo, useRef, forwardRef, useImperativeHandle } from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import { useDispatch } from 'react-redux';
import { useIntl } from 'react-intl';
import {
BottomSheetModal,
BottomSheetModalProvider,
BottomSheetFlatList,
} from '@gorhom/bottom-sheet';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { toggleAccountsBottomSheet } from '../../../redux/actions/uiAction';
import { UserAvatar, Icon, TextButton, Separator } from '../../index';
import { default as ROUTES } from '../../../constants/routeNames';
import styles from './accountsBottomSheetStyles';
import { switchAccount } from '../../../providers/hive/auth';
const AccountsBottomSheet = forwardRef(
({ accounts, currentAccount, navigateToRoute, switchAccount }, ref) => {
const dispatch = useDispatch();
const bottomSheetModalRef = useRef();
const insets = useSafeAreaInsets();
const intl = useIntl();
const snapPoints = [accounts.length <= 4 ? accounts.length * 60 + 150 : 405];
useImperativeHandle(ref, () => ({
showAccountsBottomSheet() {
bottomSheetModalRef.current?.present();
},
closeAccountsBottomSheet() {
_handleCloseBottomSheet();
},
}));
const _handleCloseBottomSheet = () => {
bottomSheetModalRef.current?.dismiss();
};
const _handleDispatchDismissBottomSheet = () => {
dispatch(toggleAccountsBottomSheet());
};
//_handlePressAccountTile(item)
const _renderAccountTile = (item) => (
<TouchableOpacity style={styles.accountTile} onPress={() => switchAccount(item)}>
<View style={styles.avatarAndNameContainer}>
<UserAvatar username={item.username} />
<View style={styles.nameContainer}>
<Text style={styles.name}>{`@${item.username}`}</Text>
</View>
</View>
{currentAccount.name === item.name && (
<Icon iconType="AntDesign" name="checkcircle" style={styles.checkIcon} size={24} />
)}
</TouchableOpacity>
);
const renderHandleComponent = () => (
<View style={styles.handleComponent}>
<View style={styles.handle} />
</View>
);
return (
<BottomSheetModalProvider>
<BottomSheetModal
backdropComponent={() => (
<TouchableOpacity
style={styles.backdrop}
activeOpacity={1}
onPress={_handleCloseBottomSheet}
/>
)}
ref={bottomSheetModalRef}
index={0}
snapPoints={snapPoints}
onDismiss={_handleDispatchDismissBottomSheet}
shouldMeasureContentHeight={true}
handleComponent={renderHandleComponent}
>
<View style={styles.accountsModal}>
<BottomSheetFlatList
data={accounts}
scrollEnabled
keyExtractor={(item) => item.name}
renderItem={({ item }) => _renderAccountTile(item)}
//contentContainerStyle={styles.contentContainer}
/>
<Separator style={styles.separator} />
<View style={{ paddingBottom: insets.bottom }}>
<View style={styles.buttonContainer}>
<TextButton
text={intl.formatMessage({ id: 'side_menu.create_a_new_account' })}
textStyle={styles.textButton}
onPress={() => navigateToRoute(ROUTES.SCREENS.REGISTER)}
/>
</View>
<Separator style={styles.separator} />
<View style={styles.buttonContainer}>
<TextButton
text={intl.formatMessage({ id: 'side_menu.add_an_existing_account' })}
textStyle={styles.textButton}
onPress={() => navigateToRoute(ROUTES.SCREENS.LOGIN)}
/>
</View>
<Separator style={styles.separator} />
</View>
</View>
</BottomSheetModal>
</BottomSheetModalProvider>
);
},
);
export default AccountsBottomSheet;

View File

@ -84,4 +84,9 @@ export default EStyleSheet.create({
backgroundColor: '$primaryBackgroundColor',
alignItems: 'center',
},
beneficiaryModal: {
flex: 1,
backgroundColor: '$modalBackground',
margin: 0,
},
});

View File

@ -27,6 +27,7 @@ const BasicHeaderView = ({
intl,
isDraftSaved,
isDraftSaving,
isDraft,
isFormValid,
isHasDropdown,
isHasIcons,
@ -264,10 +265,12 @@ const BasicHeaderView = ({
handleOnModalClose={() => setBeneficiaryModal(false)}
title={intl.formatMessage({ id: 'editor.beneficiaries' })}
animationType="slide"
style={styles.beneficiaryModal}
>
<BeneficiaryModal
username={username}
handleOnSaveBeneficiaries={_handleOnSaveBeneficiaries}
isDraft={isDraft}
/>
</Modal>
<Modal

View File

@ -11,6 +11,7 @@ import UserListItem from './view/userListItem/userListItem';
import WalletLineItem from './view/walletLineItem/walletLineItemView';
import CommunityListItem from './view/communityListItem/communityListItem';
import Separator from './view/separator/separatorView';
import EmptyScreen from './view/emptyScreen/emptyScreenView';
// Placeholders
import ListItemPlaceHolder from './view/placeHolder/listItemPlaceHolderView';
@ -48,4 +49,5 @@ export {
WalletUnclaimedPlaceHolder,
CommunitiesPlaceHolder,
Separator,
EmptyScreen,
};

View File

@ -0,0 +1,7 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
text: {
color: '$primaryBlack',
},
});

View File

@ -0,0 +1,27 @@
import React from 'react';
import { View, Text } from 'react-native';
import LottieView from 'lottie-react-native';
import { useIntl } from 'react-intl';
import styles from './emptyScreenStyles';
import globalStyles from '../../../../globalStyles';
const EmptyScreenView = ({ style, textStyle, text }) => {
const intl = useIntl();
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<LottieView
style={[{ width: 150, height: 150, marginBottom: 12 }, style]}
source={require('../../../../assets/animations/empty_screen.json')}
autoPlay
loop={true}
/>
<Text style={[globalStyles.title, styles.text, textStyle]}>
{text || intl.formatMessage({ id: 'empty_screen.nothing_here' })}
</Text>
</View>
);
};
export default EmptyScreenView;

View File

@ -28,35 +28,33 @@ const TagContainer = ({
style,
textStyle,
disabled,
communityTitle,
}) => {
const [label, setLabel] = useState(value);
const [isCommunity, setIsCommunity] = useState(false);
useEffect(() => {
let isCancelled = false;
if (value && /^hive-\d+/.test(value)) {
getCommunityTitle(value)
.then((r) => {
if (!isCancelled) {
if (value && /hive-[1-3]\d{4,6}$/.test(value)) {
if (communityTitle) {
setLabel(communityTitle);
setIsCommunity(true);
} else {
getCommunityTitle(value)
.then((r) => {
setLabel(r);
setIsCommunity(value !== r);
return r;
}
})
.catch((e) => {
if (!isCancelled) {
})
.catch((e) => {
setLabel(value);
setIsCommunity(/^hive-\d+/.test(value));
setIsCommunity(/hive-[1-3]\d{4,6}$/.test(value));
return value;
}
});
});
}
} else {
setLabel(value);
setIsCommunity(false);
}
return () => {
isCancelled = true;
};
});
// Component Functions

View File

@ -14,7 +14,7 @@ export default EStyleSheet.create({
backgroundColor: '$tagColor',
},
textWrapper: {
paddingHorizontal: Platform.OS === 'android' ? 20 : 10,
paddingHorizontal: Platform.OS === 'android' ? 16 : 8,
justifyContent: 'center',
marginRight: 8,
marginLeft: 8,

View File

@ -35,7 +35,7 @@ const Tag = ({
textStyle,
]}
>
{label}
{` ${label} `}
</Text>
</View>
</TouchableOpacity>

View File

@ -1,5 +1,6 @@
import React from 'react';
import { ActivityIndicator, View, Text, TouchableOpacity } from 'react-native';
import Highlighter from 'react-native-highlight-words';
import { UserAvatar } from '../../../userAvatar';
import Tag from '../tag/tagView';
@ -8,6 +9,7 @@ import styles from './userListItemStyles';
const UserListItem = ({
rightText,
description,
descriptionStyle,
username,
subRightText,
index,
@ -25,6 +27,7 @@ const UserListItem = ({
isFollowing = false,
isLoadingRightAction = false,
isLoggedIn,
searchValue,
}) => {
const _handleSubscribeButtonPress = () => {
const _data = {};
@ -43,8 +46,27 @@ const UserListItem = ({
{itemIndex && <Text style={styles.itemIndex}>{itemIndex}</Text>}
<UserAvatar noAction={true} style={styles.avatar} username={username} />
<View style={styles.userDescription}>
<Text style={styles.name}>{text || username}</Text>
{description && <Text style={styles.date}>{description}</Text>}
{!searchValue && <Text style={styles.name}>{text || username}</Text>}
{!!searchValue && (
<Highlighter
highlightStyle={{ backgroundColor: 'yellow' }}
searchWords={[searchValue]}
textToHighlight={text || username}
style={styles.name}
/>
)}
{!!searchValue && (
<Highlighter
highlightStyle={{ backgroundColor: 'yellow' }}
searchWords={[searchValue]}
textToHighlight={description}
style={styles.summary}
numberOfLines={3}
/>
)}
{description && !searchValue && (
<Text style={[styles.date, descriptionStyle]}>{description}</Text>
)}
</View>
{middleText && (
<View style={styles.middleWrapper}>

View File

@ -1,6 +1,8 @@
import React, { useState, useCallback } from 'react';
import React, { useState, useCallback, useEffect } from 'react';
import { View, FlatList, Text } from 'react-native';
import { useIntl } from 'react-intl';
import AsyncStorage from '@react-native-community/async-storage';
import { isArray, remove } from 'lodash';
import { lookupAccounts } from '../../providers/hive/dhive';
@ -8,13 +10,32 @@ import { FormInput, MainButton, Tag } from '..';
import styles from './beneficiaryModalStyles';
const BeneficiaryModal = ({ username, handleOnSaveBeneficiaries }) => {
const BeneficiaryModal = ({ username, handleOnSaveBeneficiaries, isDraft }) => {
const intl = useIntl();
const [beneficiaries, setBeneficiaries] = useState([
{ account: username, weight: 10000, isValid: true },
]);
useEffect(() => {
if (!isDraft) {
readTempBeneficiaries();
}
}, []);
const readTempBeneficiaries = async () => {
const tempBeneficiariesString = await AsyncStorage.getItem('temp-beneficiaries');
const tempBeneficiaries = JSON.parse(tempBeneficiariesString);
if (isArray(tempBeneficiaries)) {
tempBeneficiaries.forEach((item) => {
item.isValid = true;
});
setBeneficiaries(tempBeneficiaries);
}
};
const _addAccount = () => {
setBeneficiaries([...beneficiaries, { account: '', weight: 0, isValid: false }]);
};
@ -48,43 +69,53 @@ const BeneficiaryModal = ({ username, handleOnSaveBeneficiaries }) => {
return beneficiaries.every((item) => item.isValid);
};
const renderInputs = useCallback(
({ item, index }) => {
const _isCurrentUser = item.account === username;
const _onBlur = (item, index) => {
if (item.weight === 0) {
const newBeneficiaries = [...beneficiaries];
remove(newBeneficiaries, (current) => {
return current.account === item.account;
});
return (
<View style={styles.inputWrapper}>
<View style={styles.weightInput}>
<FormInput
isValid={_isCurrentUser || (item.weight !== 0 && item.weight <= 10000)}
isEditable={!_isCurrentUser}
value={`${item.weight / 100}`}
inputStyle={styles.weightFormInput}
wrapperStyle={styles.weightFormInputWrapper}
onChange={(value) => _onWeightInputChange(value, index)}
/>
</View>
<View style={styles.usernameInput}>
<FormInput
rightIconName="at"
iconType="MaterialCommunityIcons"
isValid={_isCurrentUser || item.isValid}
//isEditable={!_isCurrentUser}
onChange={(value) => _onUsernameInputChange(value, index)}
placeholder={intl.formatMessage({
id: 'login.username',
})}
type="username"
isFirstImage
value={item.account}
wrapperStyle={styles.usernameFormInputWrapper}
/>
</View>
setBeneficiaries(newBeneficiaries);
}
};
const renderInputs = ({ item, index }) => {
const _isCurrentUser = item.account === username;
return (
<View style={styles.inputWrapper}>
<View style={styles.weightInput}>
<FormInput
isValid={_isCurrentUser || (item.weight !== 0 && item.weight <= 10000)}
isEditable={!_isCurrentUser}
value={`${item.weight / 100}`}
inputStyle={styles.weightFormInput}
wrapperStyle={styles.weightFormInputWrapper}
onChange={(value) => _onWeightInputChange(value, index)}
onBlur={() => _onBlur(item, index)}
/>
</View>
);
},
[beneficiaries],
);
<View style={styles.usernameInput}>
<FormInput
rightIconName="at"
iconType="MaterialCommunityIcons"
isValid={_isCurrentUser || item.isValid}
//isEditable={!_isCurrentUser}
onChange={(value) => _onUsernameInputChange(value, index)}
placeholder={intl.formatMessage({
id: 'beneficiary_modal.username',
})}
type="username"
isFirstImage
value={item.account}
inputStyle={styles.usernameInput}
wrapperStyle={styles.usernameFormInputWrapper}
/>
</View>
</View>
);
};
return (
<View style={styles.container}>
@ -95,17 +126,27 @@ const BeneficiaryModal = ({ username, handleOnSaveBeneficiaries }) => {
ListHeaderComponent={() => (
<View style={styles.inputWrapper}>
<View style={[styles.weightInput, { alignItems: 'center' }]}>
<Text>Weight(%)</Text>
<Text style={styles.text}>
{intl.formatMessage({
id: 'beneficiary_modal.percent',
})}
</Text>
</View>
<View style={[styles.usernameInput, { alignItems: 'center' }]}>
<Text>Username</Text>
<Text style={styles.text}>
{intl.formatMessage({
id: 'beneficiary_modal.username',
})}
</Text>
</View>
</View>
)}
ListFooterComponent={() => (
<View style={{ alignItems: 'flex-end', marginTop: 20 }}>
<Tag
value="Add Account"
value={intl.formatMessage({
id: 'beneficiary_modal.addAccount',
})}
isFilter
disabled={!_isValid()}
isPin={_isValid()}
@ -120,7 +161,9 @@ const BeneficiaryModal = ({ username, handleOnSaveBeneficiaries }) => {
style={styles.saveButton}
isDisable={!_isValid()}
onPress={() => handleOnSaveBeneficiaries(beneficiaries)}
text="Save"
text={intl.formatMessage({
id: 'beneficiary_modal.save',
})}
/>
</View>
</View>

View File

@ -1,13 +1,18 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
container: { flex: 1, justifyContent: 'space-between' },
container: {
flex: 1,
justifyContent: 'space-between',
padding: 16,
},
bodyWrapper: { flex: 3, paddingTop: 20 },
inputWrapper: { flexDirection: 'row', alignItems: 'center' },
text: { color: '$primaryBlack', marginBottom: 8 },
weightInput: { flex: 1 },
weightFormInput: { textAlign: 'center' },
weightFormInput: { textAlign: 'center', color: '$primaryBlack' },
weightFormInputWrapper: { marginTop: 0 },
usernameInput: { flex: 4 },
usernameInput: { flex: 3, color: '$primaryBlack', marginLeft: 16 },
usernameFormInputWrapper: { marginTop: 0, marginLeft: 10 },
footerWrapper: { flex: 1 },
saveButton: {

View File

@ -0,0 +1,3 @@
import CommunitiesList from './view/communitiesList';
export default CommunitiesList;

View File

@ -2,23 +2,22 @@ import React from 'react';
import { SafeAreaView, FlatList } from 'react-native';
// Components
import CommunitiesListItem from './CommunitiesListItem';
import { CommunitiesPlaceHolder } from '../../../components/basicUIElements';
import { CommunitiesPlaceHolder } from '../../basicUIElements';
import CommunitiesListItem from './communitiesListItem';
// Styles
import styles from './communitiesListStyles';
const CommunitiesList = ({
votes,
data,
subscribingCommunities,
handleOnPress,
handleSubscribeButtonPress,
allSubscriptions,
isLoggedIn,
noResult,
screen,
}) => {
const _renderItem = ({ item, index }) => {
const isSubscribed = allSubscriptions.some((sub) => sub[0] === item.name);
return (
<CommunitiesListItem
index={index}
@ -33,8 +32,13 @@ const CommunitiesList = ({
name={item.name}
handleOnPress={handleOnPress}
handleSubscribeButtonPress={handleSubscribeButtonPress}
isSubscribed={isSubscribed}
isSubscribed={item.isSubscribed}
isLoggedIn={isLoggedIn}
loading={
subscribingCommunities.hasOwnProperty(item.name) &&
subscribingCommunities[item.name].loading
}
screen={screen}
/>
);
};
@ -57,8 +61,8 @@ const CommunitiesList = ({
<SafeAreaView style={styles.container}>
{!noResult && (
<FlatList
data={votes}
keyExtractor={(item) => item.id && item.id.toString()}
data={data}
keyExtractor={(item, index) => index.toString()}
renderItem={_renderItem}
ListEmptyComponent={_renderEmptyContent}
/>

View File

@ -0,0 +1,3 @@
import CommunitiesListItem from './view/CommunitiesListItem';
export default CommunitiesListItem;

View File

@ -1,12 +1,12 @@
import React, { useState } from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import { View, Text, TouchableOpacity, ActivityIndicator } from 'react-native';
import { useIntl } from 'react-intl';
import styles from './communitiesListItemStyles';
import { Tag } from '../../../components/basicUIElements';
import { Tag } from '../../../../basicUIElements';
const UserListItem = ({
const CommunitiesListItem = ({
index,
handleOnPress,
handleOnLongPress,
@ -22,14 +22,13 @@ const UserListItem = ({
handleSubscribeButtonPress,
isSubscribed,
isLoggedIn,
loading,
screen,
}) => {
const [subscribed, setSubscribed] = useState(isSubscribed);
const intl = useIntl();
const _handleSubscribeButtonPress = () => {
handleSubscribeButtonPress({ subscribed: !subscribed, communityId: name }).then(() => {
setSubscribed(!subscribed);
});
handleSubscribeButtonPress({ isSubscribed: isSubscribed, communityId: name }, screen);
};
return (
@ -41,24 +40,29 @@ const UserListItem = ({
<View style={styles.content}>
<View style={styles.header}>
<Text style={styles.title}>{title}</Text>
{isLoggedIn && (
<Tag
style={styles.subscribeButton}
textStyle={subscribed && styles.subscribeButtonText}
value={
!subscribed
? intl.formatMessage({
id: 'search_result.communities.subscribe',
})
: intl.formatMessage({
id: 'search_result.communities.unsubscribe',
})
}
isPin={!subscribed}
isFilter
onPress={_handleSubscribeButtonPress}
/>
)}
{isLoggedIn &&
(loading ? (
<View style={styles.indicatorView}>
<ActivityIndicator />
</View>
) : (
<Tag
style={styles.subscribeButton}
textStyle={isSubscribed && styles.subscribeButtonText}
value={
!isSubscribed
? intl.formatMessage({
id: 'search_result.communities.subscribe',
})
: intl.formatMessage({
id: 'search_result.communities.unsubscribe',
})
}
isPin={!isSubscribed}
isFilter
onPress={_handleSubscribeButtonPress}
/>
))}
</View>
{!!about && <Text style={styles.about}>{about}</Text>}
<View style={styles.separator} />
@ -77,4 +81,4 @@ const UserListItem = ({
);
};
export default UserListItem;
export default CommunitiesListItem;

View File

@ -59,4 +59,9 @@ export default EStyleSheet.create({
flexDirection: 'row',
justifyContent: 'space-between',
},
indicatorView: {
width: 65,
alignItems: 'center',
justifyContent: 'center',
},
});

View File

@ -4,7 +4,6 @@ export default EStyleSheet.create({
container: {
flex: 1,
padding: 8,
marginBottom: 40,
flexDirection: 'row',
backgroundColor: '$primaryBackgroundColor',
},

View File

@ -37,7 +37,7 @@ const SelectCommunityModalView = ({
renderItem={({ item, index, separators }) => (
<CommunityCard
community={item}
key={index}
key={index.toString()}
onPress={onPressCommunity}
separators={separators}
/>

View File

@ -23,6 +23,7 @@ export default EStyleSheet.create({
flex: 6,
},
filterBarWrapper: {
flex: 1,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',

View File

@ -28,6 +28,7 @@ const FormInputView = ({
onChange,
isValid,
value,
onBlur,
}) => {
const [_value, setValue] = useState(value || '');
const [inputBorderColor, setInputBorderColor] = useState('#e7e7e7');
@ -47,6 +48,14 @@ const FormInputView = ({
setInputBorderColor('#357ce6');
};
const _handleOnBlur = () => {
setInputBorderColor('#e7e7e7');
if (onBlur) {
onBlur();
}
};
useEffect(() => {
setValue(value);
}, [value]);
@ -97,7 +106,7 @@ const FormInputView = ({
<TextInput
style={inputStyle}
onFocus={_handleOnFocus}
onBlur={() => setInputBorderColor('#e7e7e7')}
onBlur={_handleOnBlur}
autoCapitalize="none"
secureTextEntry={secureTextEntry}
height={height}

View File

@ -21,6 +21,7 @@ import { LoginHeader } from './loginHeader';
import { MainButton } from './mainButton';
import { MarkdownEditor } from './markdownEditor';
import { Modal } from './modal';
import AccountsBottomSheet from './accountsBottomSheet';
import { NotificationLine } from './notificationLine';
import { NumericKeyboard } from './numericKeyboard';
import { ParentPost } from './parentPost';
@ -33,6 +34,7 @@ import { PostForm } from './postForm';
import { PostHeaderDescription, PostBody, Tags } from './postElements';
import { PostListItem } from './postListItem';
import { ProfileSummary } from './profileSummary';
import { ProgressiveImage } from './progressiveImage';
import { SearchInput } from './searchInput';
import { SearchModal } from './searchModal';
@ -63,6 +65,8 @@ import ScaleSlider from './scaleSlider/scaleSliderView';
import { ProductItemLine } from './productItemLine/productItemLineView';
import { HorizontalIconList } from './horizontalIconList/horizontalIconListView';
import { PopoverWrapper } from './popoverWrapper/popoverWrapperView';
import CommunitiesList from './communitiesList';
import SubscribedCommunitiesList from './subscribedCommunitiesList';
// View
import { Comment } from './comment';
@ -103,6 +107,7 @@ import {
WalletLineItem,
WalletUnclaimedPlaceHolder,
Separator,
EmptyScreen,
} from './basicUIElements';
export {
@ -140,6 +145,7 @@ export {
Logo,
MainButton,
MarkdownEditor,
AccountsBottomSheet,
Modal,
NoInternetConnection,
NoPost,
@ -205,6 +211,9 @@ export {
WalletLineItem,
WalletUnclaimedPlaceHolder,
Separator,
EmptyScreen,
HorizontalIconList,
PopoverWrapper,
CommunitiesList,
SubscribedCommunitiesList,
};

View File

@ -14,7 +14,7 @@ export default EStyleSheet.create({
color: '$primaryBlack',
backgroundColor: '$primaryBackgroundColor',
// fontFamily: '$editorFont',
//textAlignVertical: 'top',
// textAlignVertical: 'top',
},
previewContainer: {
flex: 1,

View File

@ -44,6 +44,7 @@ const MarkdownEditorView = ({
const [text, setText] = useState(draftBody || '');
const [selection, setSelection] = useState({ start: 0, end: 0 });
const [editable, setEditable] = useState(true);
const [height, setHeight] = useState(0);
const inputRef = useRef(null);
const galleryRef = useRef(null);
@ -260,7 +261,7 @@ const MarkdownEditorView = ({
<TextInput
multiline
autoCorrect={true}
autoFocus={false}
autoFocus={isReply ? true : false}
onChangeText={_changeText}
onSelectionChange={_handleOnSelectionChange}
placeholder={intl.formatMessage({

View File

@ -39,25 +39,25 @@ const PostCardContainer = ({
}, [isRefresh]);
useEffect(() => {
if (content) {
setActiveVotes(get(content, 'active_votes', []));
if (_content) {
setActiveVotes(get(_content, 'active_votes', []));
getPostReblogs(content).then((result) => {
getPostReblogs(_content).then((result) => {
setReblogs(result);
});
setContent(content);
setContent(_content);
}
}, [content]);
}, [_content]);
const _handleOnUserPress = () => {
if (content && get(currentAccount, 'name') !== get(content, 'author')) {
if (_content && get(currentAccount, 'name') !== get(_content, 'author')) {
navigation.navigate({
routeName: ROUTES.SCREENS.PROFILE,
params: {
username: get(content, 'author'),
reputation: get(content, 'author_reputation'),
username: get(_content, 'author'),
reputation: get(_content, 'author_reputation'),
},
key: get(content, 'author'),
key: get(_content, 'author'),
});
}
};
@ -79,9 +79,9 @@ const PostCardContainer = ({
routeName: ROUTES.SCREENS.VOTERS,
params: {
activeVotes,
content,
content: _content,
},
key: get(content, 'permlink'),
key: get(_content, 'permlink'),
});
};
@ -91,12 +91,16 @@ const PostCardContainer = ({
params: {
reblogs,
},
key: get(content, 'permlink', get(content, 'author', '')),
key: get(_content, 'permlink', get(_content, 'author', '')),
});
};
const _fetchPost = async () => {
await getPost(get(content, 'author'), get(content, 'permlink'), get(currentAccount, 'username'))
await getPost(
get(_content, 'author'),
get(_content, 'permlink'),
get(currentAccount, 'username'),
)
.then((result) => {
if (result) {
setContent(result);

View File

@ -32,8 +32,8 @@ export default EStyleSheet.create({
margin: 0,
alignItems: 'center',
alignSelf: 'center',
height: 200,
width: '$deviceWidth - 16',
//height: 200,
//width: '$deviceWidth - 16',
borderRadius: 8,
backgroundColor: '$primaryLightGray',
},

View File

@ -1,8 +1,8 @@
import React, { Component, useState, useEffect } from 'react';
import get from 'lodash/get';
import { TouchableOpacity, Text, View } from 'react-native';
import FastImage from 'react-native-fast-image';
import { TouchableOpacity, Text, View, Dimensions } from 'react-native';
import { injectIntl } from 'react-intl';
import ImageSize from 'react-native-image-size';
// Utils
import { getTimeFromNow } from '../../../utils/time';
@ -18,8 +18,13 @@ import { Upvote } from '../../upvote';
import styles from './postCardStyles';
// Defaults
import DEFAULT_IMAGE from '../../../assets/no_image.png';
import NSFW_IMAGE from '../../../assets/nsfw.png';
import ProgressiveImage from '../../progressiveImage';
const dim = Dimensions.get('window');
const DEFAULT_IMAGE =
'https://images.ecency.com/DQmT8R33geccEjJfzZEdsRHpP3VE8pu3peRCnQa1qukU4KR/no_image_3x.png';
const NSFW_IMAGE =
'https://images.ecency.com/DQmZ1jW4p7o5GyoqWyCib1fSLE2ftbewsMCt2GvbmT9kmoY/nsfw_3x.png';
const PostCardView = ({
handleOnUserPress,
@ -36,6 +41,7 @@ const PostCardView = ({
}) => {
const [rebloggedBy, setRebloggedBy] = useState(get(content, 'reblogged_by[0]', null));
const [activeVot, setActiveVot] = useState(activeVotes);
const [calcImgHeight, setCalcImgHeight] = useState(300);
//console.log(activeVotes);
// Component Functions
@ -60,13 +66,18 @@ const PostCardView = ({
};
const _getPostImage = (content, isNsfwPost) => {
if (content && content.image) {
if (content && content.thumbnail) {
if (isNsfwPost && content.nsfw) {
return NSFW_IMAGE;
return { image: NSFW_IMAGE, thumbnail: NSFW_IMAGE };
}
return { uri: content.image, priority: FastImage.priority.high };
//console.log(content)
ImageSize.getSize(content.thumbnail).then((size) => {
setCalcImgHeight(Math.floor((size.height / size.width) * dim.width));
});
return { image: content.image, thumbnail: content.thumbnail };
} else {
return { image: DEFAULT_IMAGE, thumbnail: DEFAULT_IMAGE };
}
return DEFAULT_IMAGE;
};
useEffect(() => {
@ -91,7 +102,7 @@ const PostCardView = ({
profileOnPress={_handleOnUserPress}
reputation={get(content, 'author_reputation')}
size={36}
tag={content.category}
content={content}
rebloggedBy={rebloggedBy}
isPromoted={get(content, 'is_promoted')}
/>
@ -102,11 +113,13 @@ const PostCardView = ({
<View style={styles.postBodyWrapper}>
<TouchableOpacity style={styles.hiddenImages} onPress={_handleOnContentPress}>
{!isHideImage && (
<FastImage
source={_image}
resizeMode={FastImage.resizeMode.contain}
style={styles.thumbnail}
defaultSource={DEFAULT_IMAGE}
<ProgressiveImage
source={{ uri: _image.image }}
thumbnailSource={{ uri: _image.thumbnail }}
style={[
styles.thumbnail,
{ width: dim.width - 18, height: Math.min(calcImgHeight, dim.height) },
]}
/>
)}
<View style={[styles.postDescripton]}>

View File

@ -208,7 +208,7 @@ const CommentBody = ({
author,
permlink,
},
key: permlink,
key: `@${author}/${permlink}`,
});
}
};

View File

@ -46,6 +46,7 @@ class PostHeaderDescription extends PureComponent {
reputation,
size,
tag,
content,
tagOnPress,
isShowOwnerIndicator,
isPromoted,
@ -90,6 +91,16 @@ class PostHeaderDescription extends PureComponent {
</View>
</View>
<View style={styles.rightContainer}>
{!!content && (
<TouchableOpacity onPress={() => tagOnPress && tagOnPress()}>
<Tag
isPostCardTag={!isPromoted}
isPin
value={content.category}
communityTitle={content.community_title}
/>
</TouchableOpacity>
)}
{!!tag && (
<TouchableOpacity onPress={() => tagOnPress && tagOnPress()}>
<Tag isPostCardTag={!isPromoted} isPin value={tag} />

View File

@ -18,8 +18,8 @@ export default EStyleSheet.create({
margin: 0,
alignItems: 'center',
alignSelf: 'center',
height: 200,
width: '$deviceWidth - 16',
//height: 200,
//width: '$deviceWidth - 16',
borderRadius: 8,
backgroundColor: '$primaryLightGray',
// paddingVertical: 10,

View File

@ -1,8 +1,8 @@
import React, { useRef, Fragment } from 'react';
import React, { useRef, useState, useEffect, Fragment } from 'react';
import ActionSheet from 'react-native-actionsheet';
import { View, Text, TouchableOpacity } from 'react-native';
import { View, Text, TouchableOpacity, Dimensions } from 'react-native';
import { injectIntl } from 'react-intl';
import FastImage from 'react-native-fast-image';
import ImageSize from 'react-native-image-size';
// Utils
import { getTimeFromNow } from '../../../utils/time';
@ -10,13 +10,17 @@ import { getTimeFromNow } from '../../../utils/time';
// Components
import { PostHeaderDescription } from '../../postElements';
import { IconButton } from '../../iconButton';
// Defaults
import DEFAULT_IMAGE from '../../../assets/no_image.png';
import ProgressiveImage from '../../progressiveImage';
// Styles
import styles from './postListItemStyles';
// Defaults
const DEFAULT_IMAGE =
'https://images.ecency.com/DQmT8R33geccEjJfzZEdsRHpP3VE8pu3peRCnQa1qukU4KR/no_image_3x.png';
const dim = Dimensions.get('window');
const PostListItemView = ({
title,
summary,
@ -25,6 +29,7 @@ const PostListItemView = ({
reputation,
created,
image,
thumbnail,
handleOnPressItem,
handleOnRemoveItem,
id,
@ -32,9 +37,21 @@ const PostListItemView = ({
isFormatedDate,
}) => {
const actionSheet = useRef(null);
const [calcImgHeight, setCalcImgHeight] = useState(300);
// Component Life Cycles
useEffect(() => {
let _isMounted = false;
if (image) {
if (!_isMounted) {
ImageSize.getSize(thumbnail.uri).then((size) => {
setCalcImgHeight(Math.floor((size.height / size.width) * dim.width));
});
}
}
return () => {
_isMounted = true;
};
}, []);
// Component Functions
return (
@ -60,7 +77,14 @@ const PostListItemView = ({
</View>
<View style={styles.body}>
<TouchableOpacity onPress={() => handleOnPressItem(id)}>
<FastImage source={image} style={styles.image} defaultSource={DEFAULT_IMAGE} />
<ProgressiveImage
source={image}
thumbnailSource={thumbnail}
style={[
styles.thumbnail,
{ width: dim.width - 16, height: Math.min(calcImgHeight, dim.height) },
]}
/>
<View style={[styles.postDescripton]}>
<Text style={styles.title}>{title}</Text>
<Text style={styles.summary}>{summary}</Text>

View File

@ -198,7 +198,7 @@ const PostDisplayView = ({
name={author || post.author}
currentAccountUsername={name}
reputation={post.author_reputation}
tag={post.category}
content={post}
size={36}
/>
<PostBody body={post.body} />

View File

@ -255,7 +255,7 @@ const PostsContainer = ({
const filter = type || selectedFilterValue;
const subfilter = selectedFeedSubfilterValue;
let options = {};
const limit = 7;
const limit = 5;
let func = null;
if (
@ -319,7 +319,7 @@ const PostsContainer = ({
_posts = unionBy(posts, _posts, 'permlink');
}
}
if (posts.length <= 7 && pageType !== 'profiles') {
if (posts.length <= 5 && pageType !== 'profiles') {
_setFeedPosts(_posts);
}
@ -462,7 +462,9 @@ const PostsContainer = ({
});
}
dispatch(subscribeAction(currentAccount, pinCode, data, successToastText, failToastText));
dispatch(
subscribeAction(currentAccount, pinCode, data, successToastText, failToastText, 'feedScreen'),
);
};
return (

View File

@ -319,7 +319,7 @@ const PostsView = ({
removeClippedSubviews
refreshing={refreshing}
onRefresh={handleOnRefreshPosts}
onEndReachedThreshold={2}
onEndReachedThreshold={0.5}
ListFooterComponent={_renderFooter}
onScrollEndDrag={_handleOnScroll}
ListEmptyComponent={_renderEmptyContent}

View File

@ -0,0 +1,62 @@
import React from 'react';
import { View, StyleSheet, Animated } from 'react-native';
import FastImage from 'react-native-fast-image';
const styles = StyleSheet.create({
imageOverlay: {
position: 'absolute',
left: 0,
right: 0,
bottom: 0,
top: 0,
borderRadius: 8,
},
container: {
backgroundColor: '#f6f6f6',
borderRadius: 8,
},
});
const AnimatedFastImage = Animated.createAnimatedComponent(FastImage);
class ProgressiveImage extends React.Component {
thumbnailAnimated = new Animated.Value(0);
imageAnimated = new Animated.Value(0);
handleThumbnailLoad = () => {
Animated.timing(this.thumbnailAnimated, {
toValue: 1,
}).start();
};
onImageLoad = () => {
Animated.timing(this.imageAnimated, {
toValue: 1,
}).start();
};
render() {
const { thumbnailSource, source, style, ...props } = this.props;
return (
<View style={styles.container}>
<AnimatedFastImage
{...props}
source={thumbnailSource}
style={[style, { opacity: this.thumbnailAnimated }]}
onLoad={this.handleThumbnailLoad}
blurRadius={1}
/>
<AnimatedFastImage
{...props}
source={source}
style={[styles.imageOverlay, { opacity: this.imageAnimated }, style]}
onLoad={this.onImageLoad}
/>
</View>
);
}
}
export default ProgressiveImage;

View File

@ -2,11 +2,9 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
// Actions
import { getUserDataWithUsername } from '../../../realm/realm';
import { switchAccount } from '../../../providers/hive/auth';
import { updateCurrentAccount } from '../../../redux/actions/accountAction';
import { toggleAccountsBottomSheet } from '../../../redux/actions/uiAction';
import { logout, isRenderRequired } from '../../../redux/actions/applicationActions';
import { logout } from '../../../redux/actions/applicationActions';
// Component
import SideMenuView from '../view/sideMenuView';
@ -18,32 +16,6 @@ import SideMenuView from '../view/sideMenuView';
*/
class SideMenuContainer extends Component {
constructor(props) {
super(props);
this.state = {
accounts: [],
};
}
// Component Life Cycle Functions
_createUserList = (otherAccounts) => {
const { currentAccount } = this.props;
const accounts = [];
otherAccounts.forEach((element) => {
accounts.push({
name: `@${element.username}`,
username: element.username,
id: element.username,
displayName: element.display_name,
isCurrentAccount: element.username === currentAccount.name,
});
});
this.setState({ accounts });
};
// Component Functions
_navigateToRoute = (route = null) => {
@ -53,70 +25,30 @@ class SideMenuContainer extends Component {
}
};
_switchAccount = async (switchingAccount = {}) => {
const { dispatch, currentAccount, navigation, otherAccounts } = this.props;
if (switchingAccount.username !== currentAccount.name) {
navigation.closeDrawer();
const accountData = otherAccounts.filter(
(account) => account.username === switchingAccount.username,
)[0];
// control user persist whole data or just username
if (accountData.name) {
accountData.username = accountData.name;
dispatch(updateCurrentAccount(accountData));
dispatch(isRenderRequired(true));
const upToDateCurrentAccount = await switchAccount(accountData.name);
const realmData = await getUserDataWithUsername(accountData.name);
upToDateCurrentAccount.username = upToDateCurrentAccount.name;
upToDateCurrentAccount.local = realmData[0];
dispatch(updateCurrentAccount(upToDateCurrentAccount));
} else {
const _currentAccount = await switchAccount(accountData.username);
const realmData = await getUserDataWithUsername(accountData.username);
_currentAccount.username = _currentAccount.name;
_currentAccount.local = realmData[0];
dispatch(updateCurrentAccount(_currentAccount));
dispatch(isRenderRequired(true));
}
}
};
_handleLogout = () => {
const { dispatch } = this.props;
const { logout, navigation } = this.props;
dispatch(logout());
navigation.closeDrawer();
logout();
};
UNSAFE_componentWillReceiveProps(nextProps) {
const { isLoggedIn } = this.props;
_handlePressOptions = () => {
const { toggleAccountsBottomSheet } = this.props;
if (isLoggedIn) {
this._createUserList(nextProps.otherAccounts);
}
}
toggleAccountsBottomSheet();
};
render() {
const { currentAccount, isLoggedIn } = this.props;
const { accounts } = this.state;
return (
<SideMenuView
navigateToRoute={this._navigateToRoute}
isLoggedIn={isLoggedIn}
userAvatar={null}
accounts={accounts}
currentAccount={currentAccount}
switchAccount={this._switchAccount}
handleLogout={this._handleLogout}
handlePressOptions={this._handlePressOptions}
/>
);
}
@ -128,4 +60,9 @@ const mapStateToProps = (state) => ({
otherAccounts: state.account.otherAccounts,
});
export default connect(mapStateToProps)(SideMenuContainer);
const mapDispatchToProps = {
toggleAccountsBottomSheet,
logout,
};
export default connect(mapStateToProps, mapDispatchToProps)(SideMenuContainer);

View File

@ -1,35 +1,25 @@
import React, { Component, useEffect, useState, useRef } from 'react';
import {
View,
Text,
ImageBackground,
FlatList,
TouchableOpacity,
SafeAreaView,
} from 'react-native';
import React, { useEffect, useState, useRef } from 'react';
import { View, Text, ImageBackground, FlatList, TouchableOpacity } from 'react-native';
import { injectIntl, useIntl } from 'react-intl';
import LinearGradient from 'react-native-linear-gradient';
import ActionSheet from 'react-native-actionsheet';
import VersionNumber from 'react-native-version-number';
import { isEmpty } from 'lodash';
import { getStorageType } from '../../../realm/realm';
import Modal from '../../modal';
// Components
import { Icon } from '../../icon';
import { UserAvatar } from '../../userAvatar';
import Separator from '../../basicUIElements/view/separator/separatorView';
import { TextWithIcon } from '../../basicUIElements';
// Constants
import MENU from '../../../constants/sideMenuItems';
import { default as ROUTES } from '../../../constants/routeNames';
//Utils
import { getVotingPower } from '../../../utils/manaBar';
// Styles
import styles from './sideMenuStyles';
import { TextButton } from '../../buttons';
// Images
const SIDE_MENU_BACKGROUND = require('../../../assets/side_menu_background.png');
@ -38,9 +28,8 @@ const SideMenuView = ({
currentAccount,
isLoggedIn,
handleLogout,
accounts,
switchAccount,
navigateToRoute,
handlePressOptions,
}) => {
const intl = useIntl();
const ActionSheetRef = useRef(null);
@ -49,7 +38,6 @@ const SideMenuView = ({
isLoggedIn ? MENU.AUTH_MENU_ITEMS : MENU.NO_AUTH_MENU_ITEMS,
);
const [storageT, setStorageT] = useState('R');
const [isAccountsModalOpen, setIsAccountsModalOpen] = useState(false);
const [upower, setUpower] = useState(0);
// Component Life Cycles
@ -66,7 +54,7 @@ const SideMenuView = ({
}, []);
useEffect(() => {
if (isLoggedIn) {
if (isLoggedIn && !isEmpty(currentAccount)) {
setUpower(getVotingPower(currentAccount).toFixed(1));
}
});
@ -81,10 +69,6 @@ const SideMenuView = ({
navigateToRoute(item.route);
};
const _toggleAccountsModalOpen = () => {
setIsAccountsModalOpen(!isAccountsModalOpen);
};
useEffect(() => {
setMenuItems(isLoggedIn ? MENU.AUTH_MENU_ITEMS : MENU.NO_AUTH_MENU_ITEMS);
}, [isLoggedIn]);
@ -121,29 +105,6 @@ const SideMenuView = ({
</TouchableOpacity>
);
const _handlePressAccountTile = (item) => {
if (!item.isCurrentAccount) {
switchAccount(item);
}
setIsAccountsModalOpen(false);
};
const _renderAccountTile = (item) => (
<TouchableOpacity style={styles.accountTile} onPress={() => _handlePressAccountTile(item)}>
<View style={styles.avatarAndNameContainer}>
<UserAvatar username={item.username} />
<View style={styles.nameContainer}>
{item.displayName && <Text style={styles.displayName}>{item.displayName}</Text>}
<Text style={styles.name}>{item.name}</Text>
</View>
</View>
{item.isCurrentAccount && (
<Icon iconType="AntDesign" name="checkcircle" style={styles.checkIcon} size={24} />
)}
</TouchableOpacity>
);
return (
<View style={styles.container}>
<LinearGradient
@ -179,7 +140,7 @@ const SideMenuView = ({
/>
</View>
<TouchableOpacity style={styles.iconWrapper} onPress={_toggleAccountsModalOpen}>
<TouchableOpacity style={styles.iconWrapper} onPress={handlePressOptions}>
<Icon
iconType="SimpleLineIcons"
style={styles.optionIcon}
@ -209,42 +170,6 @@ const SideMenuView = ({
index === 0 ? handleLogout() : null;
}}
/>
<Modal
isFullScreen={false}
isOpen={isAccountsModalOpen}
isBottomModal
isTransparent
isRadius
coverScreen={false}
title={intl.formatMessage({ id: 'side_menu.accounts' })}
onBackdropPress={_toggleAccountsModalOpen}
>
<SafeAreaView style={styles.accountModal}>
<Separator style={styles.separator} />
<FlatList
data={accounts}
ItemSeparatorComponent={() => <Separator style={styles.separator} />}
renderItem={({ item }) => _renderAccountTile(item)}
scrollEnabled
/>
<Separator style={styles.separator} />
<View style={styles.buttonContainer}>
<TextButton
text={intl.formatMessage({ id: 'side_menu.create_a_new_account' })}
textStyle={styles.textButton}
onPress={() => navigateToRoute(ROUTES.SCREENS.REGISTER)}
/>
</View>
<Separator style={styles.separator} />
<View style={styles.buttonContainer}>
<TextButton
text={intl.formatMessage({ id: 'side_menu.add_an_existing_account' })}
textStyle={styles.textButton}
onPress={() => navigateToRoute(ROUTES.SCREENS.LOGIN)}
/>
</View>
</SafeAreaView>
</Modal>
</View>
);
};

View File

@ -0,0 +1,4 @@
import SubscribedCommunitiesListView from './view/subscribedCommunitiesListView';
import SubscribedCommunitiesList from './view/subscribedCommunitiesListView';
export default SubscribedCommunitiesList;

View File

@ -0,0 +1,51 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
container: {
flex: 1,
backgroundColor: '$primaryBackgroundColor',
},
itemWrapper: {
paddingHorizontal: 16,
paddingTop: 16,
paddingBottom: 8,
borderRadius: 8,
backgroundColor: '$primaryBackgroundColor',
flexDirection: 'row',
alignItems: 'center',
},
itemWrapperGray: {
backgroundColor: '$primaryLightBackground',
},
username: {
marginLeft: 10,
color: '$primaryBlack',
},
communityWrapper: {
paddingHorizontal: 16,
paddingTop: 10,
paddingBottom: 10,
borderRadius: 8,
backgroundColor: '$primaryBackgroundColor',
flexDirection: 'row',
alignItems: 'center',
flex: 1,
},
subscribeButton: {
maxWidth: 75,
borderWidth: 1,
borderColor: '$primaryBlue',
},
subscribeButtonText: {
textAlign: 'center',
color: '$primaryBlue',
},
community: {
justifyContent: 'center',
marginLeft: 15,
color: '$primaryBlack',
},
tabbarItem: {
flex: 1,
},
});

View File

@ -0,0 +1,82 @@
import React from 'react';
import { View, FlatList, TouchableOpacity, Text, ActivityIndicator } from 'react-native';
import { useIntl } from 'react-intl';
import { Tag, UserAvatar } from '../../index';
import { ListPlaceHolder } from '../../basicUIElements';
import DEFAULT_IMAGE from '../../../assets/no_image.png';
import styles from './subscribedCommunitiesListStyles';
const SubscribedCommunitiesListView = ({
data,
subscribingCommunities,
handleOnPress,
handleSubscribeButtonPress,
}) => {
const intl = useIntl();
const _renderEmptyContent = () => {
return (
<>
<ListPlaceHolder />
</>
);
};
return (
<FlatList
data={data}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item, index }) => (
<View style={[styles.communityWrapper, index % 2 !== 0 && styles.itemWrapperGray]}>
<View style={{ flex: 3, flexDirection: 'row', alignItems: 'center' }}>
<TouchableOpacity onPress={() => handleOnPress(item[0])}>
<UserAvatar username={item[0]} defaultSource={DEFAULT_IMAGE} noAction />
</TouchableOpacity>
<TouchableOpacity onPress={() => handleOnPress(item[0])}>
<Text style={styles.community}>{item[1]}</Text>
</TouchableOpacity>
</View>
<View>
{subscribingCommunities.hasOwnProperty(item[0]) &&
subscribingCommunities[item[0]].loading ? (
<View style={{ width: 65, alignItems: 'center', justifyContent: 'center' }}>
<ActivityIndicator />
</View>
) : (
<Tag
style={styles.subscribeButton}
textStyle={item[4] && styles.subscribeButtonText}
value={
!item[4]
? intl.formatMessage({
id: 'search_result.communities.subscribe',
})
: intl.formatMessage({
id: 'search_result.communities.unsubscribe',
})
}
isPin={!item[4]}
isFilter
onPress={() =>
handleSubscribeButtonPress(
{
isSubscribed: item[4],
communityId: item[0],
},
'communitiesScreenJoinedTab',
)
}
/>
)}
</View>
</View>
)}
ListEmptyComponent={_renderEmptyContent}
/>
);
};
export default SubscribedCommunitiesListView;

View File

@ -87,23 +87,22 @@ class UpvoteContainer extends PureComponent {
const quote = get(globalProps, 'quote', 0);
const sbdPrintRate = get(globalProps, 'sbdPrintRate', 0);
const SBD_PRINT_RATE_MAX = 10000;
const percent_steem_dollars =
(content.percent_hbd || content.percent_steem_dollars || 10000) / 20000;
const percent_steem_dollars = (content.percent_hbd || 10000) / 20000;
const pending_payout_sbd = pendingPayout * percent_steem_dollars;
const pending_payout_hbd = pendingPayout * percent_steem_dollars;
const price_per_steem = base / quote;
const pending_payout_sp = (pendingPayout - pending_payout_sbd) / price_per_steem;
const pending_payout_printed_sbd = pending_payout_sbd * (sbdPrintRate / SBD_PRINT_RATE_MAX);
const pending_payout_printed_steem =
(pending_payout_sbd - pending_payout_printed_sbd) / price_per_steem;
const pending_payout_hp = (pendingPayout - pending_payout_hbd) / price_per_steem;
const pending_payout_printed_hbd = pending_payout_hbd * (sbdPrintRate / SBD_PRINT_RATE_MAX);
const pending_payout_printed_hive =
(pending_payout_hbd - pending_payout_printed_hbd) / price_per_steem;
const breakdownPayout =
pending_payout_printed_sbd.toFixed(3) +
pending_payout_printed_hbd.toFixed(3) +
' HBD, ' +
pending_payout_printed_steem.toFixed(3) +
pending_payout_printed_hive.toFixed(3) +
' HIVE, ' +
pending_payout_sp.toFixed(3) +
pending_payout_hp.toFixed(3) +
' HP';
return (

View File

@ -252,6 +252,7 @@
"schedules": "Jaduwal",
"gallery": "Album",
"settings": "Peungaturan",
"communities": "Communities",
"add_account": "Tamah akun",
"logout": "Teubit",
"cancel": "Batëu",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "جداول زمنية",
"gallery": "معرض الصور",
"settings": "إعدادات",
"communities": "Communities",
"add_account": "إضافة حساب",
"logout": "تسجيل الخروج",
"cancel": "إلغاء",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Cədvəllər",
"gallery": "Qalereya",
"settings": "Tənzimləmələr",
"communities": "Communities",
"add_account": "Hesab Əlavə et",
"logout": ıxış",
"cancel": "İmtina",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -159,7 +159,7 @@
"voting_power": "Сила за гласуване",
"login_to_see": "Влез в акаунта да видиш",
"follow_people": "Последвайте хора да ви последват и те",
"follow_communities": "Join some communities to fill your feed",
"follow_communities": "Влез в някой общества за да изпълниш потока си",
"havent_commented": "Все още няма коментари",
"havent_posted": "Все още няма публикации",
"steem_power": "Hive Сила/стойност",
@ -241,8 +241,8 @@
"new": "Нови",
"blog": "Блог",
"posts": "Публикации",
"friends": "Friends",
"communities": "Communities"
"friends": "Приятели",
"communities": "Общности"
},
"side_menu": {
"profile": "Профил",
@ -252,13 +252,14 @@
"schedules": "Графици",
"gallery": "Галерия",
"settings": "Настройки",
"communities": "Общности",
"add_account": "Добавяне на профил",
"logout": "Изход",
"cancel": "Отказ",
"logout_text": "Сигурни ли сте, че искате да излезете?",
"create_a_new_account": "Create a new account",
"add_an_existing_account": "Add an existing account",
"accounts": "Accounts"
"create_a_new_account": "Създаване на нов акаунт",
"add_an_existing_account": "Добави съществуващ акаунт",
"accounts": "Акаунти"
},
"header": {
"title": "Влезте, за да персонализирате вашите постове",
@ -287,18 +288,18 @@
"limited_characters": "Използвайте само малки букви, цифри и едно тире",
"limited_firstchar": "Тагът трябва да започва с буква!",
"limited_lastchar": "Тагът трябва да завършва с буква или число",
"setting_schedule": "Scheduling Time",
"setting_reward": "Reward",
"setting_beneficiary": "Beneficiary",
"reward_default": "Default 50% / 50%",
"reward_power_up": "Power Up 100%",
"reward_decline": "Decline Payout",
"beneficiaries": "Beneficiaries",
"options": "Options",
"my_blog": "My Blog",
"my_communities": "My Communities",
"top_communities": "Top Communities",
"schedule_modal_title": "Schedule Post"
"setting_schedule": "Насрочване за време",
"setting_reward": "Награда",
"setting_beneficiary": "Бенефициент",
"reward_default": "По подразбиране 50% / 50%",
"reward_power_up": "Намаляне на силата 100%",
"reward_decline": "Откажи плащането",
"beneficiaries": "Бенефициенти",
"options": "Опции",
"my_blog": "Моят блог",
"my_communities": "Моите общества",
"top_communities": "Топ Общности",
"schedule_modal_title": "Насрочи пост"
},
"pincode": {
"enter_text": "Вкарай Пин-код за отключване",
@ -314,7 +315,7 @@
"fail": "Провал!!",
"move": "Премести",
"move_question": "Сигурен ли сте да преместите към чернови?",
"success_shared": "Success! Content submitted!",
"success_shared": "Успех! Съдържанието е изпратено!",
"success_moved": "Премено в чернови",
"permission_denied": "Достъпът е отказан",
"permission_text": "Моля, идете на Настройки на телефона и променете разрешенията към Ecency.",
@ -324,15 +325,15 @@
"success_favorite": "Добавено в любими!",
"success_unfavorite": "Прамахнат от любими!",
"success_follow": "Последван успешно!",
"fail_follow": "Follow failed!",
"success_subscribe": "Subscribe success!",
"fail_subscribe": "Subscribe failed!",
"success_leave": "Leave success!",
"fail_leave": "Leave failed!",
"fail_follow": "Последването се провали!",
"success_subscribe": "Абонирането е успешно!",
"fail_subscribe": "Абонирането се провали!",
"success_leave": "Излизането е успешно!",
"fail_leave": "Излизането се провали!",
"success_mute": "Заглушаване успешно!",
"success_unmute": "Заглушаване премахнато успешно!",
"success_unfollow": "Отказ от следване!",
"fail_unfollow": "Unfollow failed!",
"fail_unfollow": "Отследването се провали!",
"warning": "Внимание",
"invalid_pincode": "Невалиден Пин-код,провери и опитай отново.",
"remove_alert": "Сигорни ли сте за премахването?",
@ -348,7 +349,7 @@
"same_user": "Този потребител вече е добавен в листа.",
"unknow_error": "Възникна грешка",
"error": "Грешка",
"fetch_error": "Connection issue, change server and restart",
"fetch_error": "Проблем с връзката, сменете сървъра и рестартирайте",
"connection_fail": "Връзката е неуспешна",
"connection_success": "Успешно свързване.",
"checking": "Проверка...",
@ -359,10 +360,10 @@
"payloadTooLarge": "Размерът на файла е твърде голям, моля преоразмерете или качете по-малко изображение",
"qoutaExceeded": "Превишена квота за качване",
"invalidImage": "Невалидна снимка,опитайте различен файл",
"something_wrong": "Something went wrong.",
"something_wrong_alt": "Try https://ecency.com",
"something_wrong_reload": "Reload",
"can_not_be_empty": "Title and body can not be empty!"
"something_wrong": "Нещо се обърка.",
"something_wrong_alt": "Опитай https://ecency.com",
"something_wrong_reload": "Презареди",
"can_not_be_empty": "Заглавитето и основата немогат да бъдат празни!"
},
"post": {
"reblog_alert": "Сигорни ли сте,че искате да споделите?",
@ -510,7 +511,7 @@
"days": "дни",
"user": "Потребител",
"permlink": "Публикация",
"permlinkPlaceholder": "username/permlink",
"permlinkPlaceholder": "потребителско име/permlink",
"information": "Сигурни ли сте, че искате да промотирате?"
},
"boostPost": {
@ -538,28 +539,28 @@
"more_replies": "още отговори"
},
"search_result": {
"others": "Others",
"others": "Други",
"best": {
"title": "Best"
"title": "Най-добри"
},
"people": {
"title": "People"
"title": "Хора"
},
"topics": {
"title": "Topics"
"title": "Tеми"
},
"communities": {
"title": "Общности",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
"title": "Групи",
"subscribe": "Присъединете се",
"unsubscribe": "Напусни",
"subscribers": "Членове",
"posters": "Публикуващи",
"posts": "Публикации"
},
"communities_filter": {
"my": "My Communities",
"my": "Моите общества",
"rank": "Ранг",
"subs": "Members",
"subs": "Членове",
"new": "Нови"
},
"post_result_filter": {
@ -574,11 +575,24 @@
},
"community": {
"new_post": "Нова публикация",
"community": "community",
"details": "Details"
"community": "oбщество",
"details": "Подробности"
},
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
"follow": "Последвай",
"unfollow": "Отследване"
},
"communities": {
"joined": "Членство",
"discover": "Открийте"
},
"empty_screen": {
"nothing_here": "Няма нищо тук"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "সময়সূচীসমূহ",
"gallery": "গ্যালারি",
"settings": "সেটিংস",
"communities": "Communities",
"add_account": "একাউন্ট যোগ করুন",
"logout": "লগআউট",
"cancel": "বাতিল করুন",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "কমিউনিটি",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Zeitpläne",
"gallery": "Galerie",
"settings": "Einstellungen",
"communities": "Communities",
"add_account": "Konto hinzufügen",
"logout": "Abmelden",
"cancel": "Abbrechen",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Beitreten",
"unsubscribe": "Austreten",
"subscribers": "Mitglieder",
@ -580,5 +581,18 @@
"user": {
"follow": "Folgen",
"unfollow": "Nicht mehr folgen"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Horarios",
"gallery": "Galería",
"settings": "Ajustes",
"communities": "Comunidades",
"add_account": "Agregar cuenta",
"logout": "Cerrar sesión",
"cancel": "Cancelar",
@ -538,7 +539,7 @@
"more_replies": "mas comentarios"
},
"search_result": {
"others": "Others",
"others": "Otros",
"best": {
"title": "Mejor"
},
@ -549,7 +550,7 @@
"title": "Temas"
},
"communities": {
"title": "Comunidades",
"title": "Grupos",
"subscribe": "Unirse",
"unsubscribe": "Salir",
"subscribers": "Participantes",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membresía",
"discover": "Descubrir"
},
"empty_screen": {
"nothing_here": "Nada aquí"
},
"beneficiary_modal": {
"percent": "Porcentaje",
"username": "Nombre de Usuario",
"addAccount": "Agregar cuenta",
"save": "Guardar"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -2,10 +2,10 @@
"wallet": {
"curation_reward": "Kuraatori tasu",
"author_reward": "Autoritasu",
"comment_benefactor_reward": "Benefactor Reward",
"claim_reward_balance": "Claim Reward ",
"comment_benefactor_reward": "Kasusaaja tasu",
"claim_reward_balance": "Lunasta tasu ",
"transfer": "Ülekanne",
"transfer_to_vesting": "To Vesting",
"transfer_to_vesting": "Teenimisse",
"transfer_from_savings": "Hoiusest",
"withdraw_vesting": "Väljaluülitus",
"fill_order": "Täida Tellimus",
@ -13,7 +13,7 @@
"comment": "Kommenteeri",
"checkin": "Kasutus",
"vote": "Hääleta",
"reblog": "Taaspostita",
"reblog": "Jaga",
"login": "Sisselogimine",
"incoming_transfer_title": "Saabuv ülekanne",
"outgoing_transfer_title": "Väljuv ülekanne",
@ -21,36 +21,36 @@
"delegation": "Volitus",
"delegations": "Volitused",
"delegation_title": "Volitustasu",
"delegation_desc": "Earn Points everyday for delegation",
"delegation_desc": "Teeni punkte igapäevaselt volitamisega",
"post_title": "Punktid postitustest",
"comment_title": "Punktid kommentaaridest",
"vote_title": "Punktid hääletustest",
"reblog_title": "Punktid taaspostitustest",
"reblog_title": "Punktid jagamise eest",
"login_title": "Punktid sisselogimisest",
"checkin_title": "Punktid sisse logimise eest",
"referral": "Soovitaja",
"referral_title": "Referral rewards",
"referral_desc": "Invite friends and earn Points",
"referral_title": "Soovitaja tasu",
"referral_desc": "Kutsu sõbrad ja kogu punkte",
"checkin_extra_title": "Kasutusboonus",
"no_activity": "No recent activity",
"no_activity": "Hiljutised tegevused puuduvad",
"outgoing_transfer_description": "",
"incoming_transfer_description": "",
"post_desc": "You can earn point by posting regularly. Posting gives you upto 15 points.",
"comment_desc": "Each comment you make helps you to grow your audience and also earns you upto 5 points.",
"checkin_desc": "Checking in regularly gives you 0.25 points.",
"vote_desc": "By voting you give reward to other creators and also earn back upto 0.01 x vote weight points.",
"reblog_desc": "Share what post you like with your friends and earn points.",
"login_desc": "When you login into app first time you earn 100 points.",
"checkin_extra_desc": "Consistent use of app gives you extra chances to earn more points, be more active and earn more.",
"post_desc": "Teeni punkte regulaarselt postitamisega. Postitamine annab kuni 15 punkti.",
"comment_desc": "Iga kirjutatud kommentaar aitab kasvatada sinu kogukonda ning teenid 5 punkti.",
"checkin_desc": "Regulaarselt sisse logides saad 0,25 punkti.",
"vote_desc": "Hääletades tasustate teisi loojaid ja teenite ka ise kuni 0,01 x hääle kaalupunkti.",
"reblog_desc": "Jaga meeldivat postitust enda sõpradega ning teeni punkte.",
"login_desc": "Esimest korda rakendusse sisse logides teenid 100 punkti.",
"checkin_extra_desc": "Regulaarne rakenduse kasutamine annab lisavõimaluse teenida rohkem punkte, ole aktiivne ning teeni rohkem.",
"dropdown_transfer": "Kingi",
"dropdown_promote": "Reklaami",
"dropdown_boost": "Võimenda",
"from": "Kellelt",
"to": "Kellele",
"estimated_value_desc": "According to purchase value",
"estimated_value": "Estimated value",
"estimated_amount": "Vote value",
"amount_information": "Drag the slider to adjust the amount",
"estimated_value_desc": "Vastavalt ostu väärtusele",
"estimated_value": "Hinnanguline väärtus",
"estimated_amount": "Hääle väärtus",
"amount_information": "Koguse muutmiseks liiguta liugurit",
"amount": "Kogus",
"memo": "Märge",
"information": "Oled kindel, et soovid raha üle kanda?",
@ -61,26 +61,26 @@
"transfer_token": "Ülekanne",
"purchase_estm": "OSTA PUNKTE",
"points": "Kingi kellelegi punkte",
"transfer_to_saving": "To Saving",
"transfer_to_saving": "Hoiusesse",
"powerUp": "Lisa võimsust",
"withdraw_to_saving": "Withdraw Saving",
"steemconnect_title": "Hivesigner Transfer",
"withdraw_to_saving": "Võta hoius välja",
"steemconnect_title": "Hivesigneri ülekanne",
"next": "EDASI",
"delegate": "Delegate",
"delegate": "Volita",
"power_down": "Väljaluülitus",
"withdraw_steem": "Withdraw HIVE",
"withdraw_sbd": "Withdraw HBD",
"transfer_to_savings": "To Savings",
"withdraw_steem": "Võta välja HIVE",
"withdraw_sbd": "Võta välja HBD",
"transfer_to_savings": "Hoiusesse",
"convert": "Konverteeri",
"escrow_transfer": "Escrow Transfer",
"escrow_dispute": "Escrow Dispute",
"escrow_release": "Escrow Release",
"escrow_approve": "Escrow Approve",
"cancel_transfer_from_savings": "Cancel From Savings",
"escrow_transfer": "Deposiidi ülekanne",
"escrow_dispute": "Deposiidi Vaidlustamine",
"escrow_release": "Deposiidi Vabastamine",
"escrow_approve": "Deposiidi Kinnitamine",
"cancel_transfer_from_savings": "Tühista ülekanne Hoiusest",
"delegate_vesting_shares": "Volitus",
"fill_convert_request": "Convert Executed",
"fill_transfer_from_savings": "Savings Executed",
"fill_vesting_withdraw": "PowerDown executed",
"fill_convert_request": "Vahetamine alustatud",
"fill_transfer_from_savings": "Hoius alustatud",
"fill_vesting_withdraw": "PowerDown alustatud",
"estm": {
"title": "Punktid",
"buy": "OSTA PUNKTE"
@ -105,13 +105,13 @@
"btc": {
"title": "BTC",
"buy": "OSTA BTC",
"address": "RECEIVE"
"address": "VÕTA VASTU"
}
},
"notification": {
"vote": "hääletatud",
"unvote": "hääl eemaldatud",
"reply": "replied to",
"reply": "vastas",
"mention": "mainis",
"follow": "hakkas sind jälgima",
"unfollow": "enam ei jälgi sind",
@ -130,16 +130,16 @@
"this_week": "Sel nädalal",
"this_month": "Sel kuul",
"older_then": "Vanem kui kuu",
"activities": "All",
"activities": "Kõik",
"replies": "Vastused",
"mentions": "Mentions",
"reblogs": "Reblogs",
"noactivity": "No recent activity"
"mentions": "Mainimised",
"reblogs": "Jagatud",
"noactivity": "Hiljutised tegevused puuduvad"
},
"leaderboard": {
"daily": "DAILY",
"weekly": "WEEKLY",
"monthly": "MONTHLY"
"daily": "PÄEV",
"weekly": "NÄDAL",
"monthly": "KUU"
},
"messages": {
"comingsoon": "Sõnumite funktsionaalus ei ole veel valimis!"
@ -158,18 +158,18 @@
"hours": "tundi",
"voting_power": "Hääletusjõud",
"login_to_see": "Nägemiseks logi sisse",
"follow_people": "Follow some people to fill your feed",
"follow_communities": "Join some communities to fill your feed",
"follow_people": "Jälgi inimesi, et täita oma voog",
"follow_communities": "Liitu kogukondadega, et täita oma voogu",
"havent_commented": "ei ole veel midagi kommenteerinud",
"havent_posted": "ei ole veel midagi postitanud",
"steem_power": "Hive Power",
"next_power_text": "Järgmise väljaluülitus on",
"days": "päeva",
"day": "päev",
"steem_dollars": "Hive Dollars",
"steem_dollars": "Hive Dollarid",
"savings": "Säästud",
"edit": {
"display_name": "Display Name",
"display_name": "Kuvatav Nimi",
"about": "Teave",
"location": "Asukoht",
"website": "Koduleht"
@ -188,7 +188,7 @@
"vote": "Hääleta",
"comment": "Kommenteeri",
"mention": "Maini",
"reblog": "Taaspostita",
"reblog": "Jaha",
"transfers": "Ülekanded"
},
"pincode": "Pincode",
@ -217,10 +217,10 @@
"signin_title": "Et saada osa kõikidest Ecency funktsioonidest",
"username": "Kasutajanimi",
"password": "Parool või WIF",
"description": "By signing in, you agree to our Terms of Services and Privacy Policies.",
"description": "Logides sisse, nõustute meie kasutustingimuste ja privaatsuseeskirjadega.",
"cancel": "tühista",
"login": "LOGI SISSE",
"steemconnect_description": "If you don't want to keep your password encrypted and saved on your device, you can use Hivesigner.",
"steemconnect_description": "Kui sa ei soovi hoida oma parooli krüpteerituna ja salvestatuna oma seadmes, kasuta Hivesigner'it.",
"steemconnect_fee_description": "info"
},
"register": {
@ -229,9 +229,9 @@
"username": "Vali kasutajanimi",
"mail": "Kirjuta oma e-posti aadress",
"ref_user": "Kutsutud kasutaja (Vabatahtlik)",
"500_error": "Your request could not be processed, signup queue is likely full! Try again in few minutes...",
"500_error": "Toiming ebaõnnestus, registreerumise järjekord on täis! Proovi uuesti mõne minuti pärast...",
"title_description": "Üks kasutaja kõige haldamiseks",
"form_description": "By signing up with us, you agree to our Terms of Service and Privacy Policies."
"form_description": "Registreerudes nõustute meie kasutustingimuste ja privaatsuseeskirjadega."
},
"home": {
"feed": "Sein",
@ -252,6 +252,7 @@
"schedules": "Ajakavad",
"gallery": "Galerii",
"settings": "Seaded",
"communities": "Kogukonnad",
"add_account": "Lisa konto",
"logout": "Logi välja",
"cancel": "Tühista",
@ -282,7 +283,7 @@
"limited_tags": "10 silti lubatud, eemalda mõned",
"limited_length": "Sildi maksimum pikkus võib olla 24",
"limited_dash": "Kasuta ühte kriipsu igas sildis",
"limited_space": "Use space to separate tags",
"limited_space": "Kasuta tühikut, et eraldada silte",
"limited_lowercase": "Kasuta siltides ainult väiketähti",
"limited_characters": "Kasuta ainult väiketähti, numbreid ja ühte kriipsu",
"limited_firstchar": "Silt peab algama tähega",
@ -298,7 +299,7 @@
"my_blog": "Minu blogi",
"my_communities": "Minu kogukonnad",
"top_communities": "Top kogukonnad",
"schedule_modal_title": "Schedule Post"
"schedule_modal_title": "Ajasta postitus"
},
"pincode": {
"enter_text": "Enter pin to unlock",
@ -317,8 +318,8 @@
"success_shared": "Valmis! Sisu esitatud!",
"success_moved": "Teisaldatud mustanditesse",
"permission_denied": "Juurdepääs keelatud",
"permission_text": "Please, go to phone Settings and change Ecency app permissions.",
"key_warning": "Operation requires active key or master password, please relogin!",
"permission_text": "Palun mine telefoniSeadetesse ning muuda Ecency rakenduse õiguseid.",
"key_warning": "Tegevus nõuab aktiivset võtit või master parooli, palun sisene uuesti!",
"success_rebloged": "Rebloged!",
"already_rebloged": "Sa oled seda juba jaganud!",
"success_favorite": "Lisatud lemmikuks!",
@ -336,8 +337,8 @@
"warning": "Hoiatus",
"invalid_pincode": "Invalid pin code, please check and try again.",
"remove_alert": "Are you sure want to remove?",
"clear_alert": "Are you sure you want to clear?",
"clear_user_alert": "Are you sure you want to clear all user data?",
"clear_alert": "Kas soovid tõesti selle tühjendada?",
"clear_user_alert": "Oled kindel, et soovid puhastada kõik kasutajaandmed?",
"clear": "Tühjenda",
"cancel": "Tühista",
"delete": "Kustuta",
@ -348,84 +349,84 @@
"same_user": "See konto on juba nimekirja lisatud",
"unknow_error": "Ilmnes tõrge",
"error": "Tõrge",
"fetch_error": "Connection issue, change server and restart",
"fetch_error": "Ühenduse viga, muuda serverit ja taaskäivita rakendus",
"connection_fail": "Ühendus nurjus!",
"connection_success": "Edukalt ühendatud!",
"checking": "Kontrollin...",
"external_link": "Ava veebilehitsejas",
"not_existing_post": "The post does not exist! Please check permlink and author.",
"google_play_version": "We noticed that your device has old version of Google Play. Please update Google Play services and try again!",
"rc_down": "Not enough resource credits to perform an action! \n\nBoost your account to continue enjoy the experience. Do you want to boost your account, now?",
"payloadTooLarge": "File size too big, please resize or upload smaller image",
"qoutaExceeded": "Upload quota exceeded",
"invalidImage": "Invalid image, try different file",
"not_existing_post": "Seda postitust ei eksisteeri! Palun kontrolli linki ja autorit.",
"google_play_version": "Märkasime, et teie seadmes on Google Play vanem versioon. Palun uuenda Google Play services ja proovi uuesti!",
"rc_down": "Toimingu jaoks pole piisavalt ressursipunkte!\n\nVõimendage oma kontot, et jätkata nautimisega. Kas soovite kohe võimendada oma kontot?",
"payloadTooLarge": "Fail liiga suur, palun vähenda suurust või lae üles väiksem pilt",
"qoutaExceeded": "Üleslaadimise limiit ületatud",
"invalidImage": "Pilt ei sobi, proovi teist faili",
"something_wrong": "Midagi läks valesti.",
"something_wrong_alt": "Proovi https://ecency.com",
"something_wrong_reload": "Reload",
"can_not_be_empty": "Title and body can not be empty!"
"something_wrong_reload": "Värskenda",
"can_not_be_empty": "Pealkiri ja sisu ei tohi olla tühjad!"
},
"post": {
"reblog_alert": "Oled sa kindel, et soovid seda jagada?",
"removed_hint": "Content is not available",
"copy_link": "Copy link",
"removed_hint": "Sisu pole kättesaadav",
"copy_link": "Kopeeri link",
"reblogged": "jagatud %s poolt",
"sponsored": "SPONSOREERITUD",
"open_thread": "Open thread",
"image": "Image",
"open_thread": "Ava lõim",
"image": "Pilt",
"link": "Link",
"gallery_mode": "Gallery mode",
"save_to_local": "Download to device",
"image_saved": "Image saved to Photo Gallery",
"image_saved_error": "Error Saving Image",
"wrong_link": "Wrong link"
"gallery_mode": "Galerii",
"save_to_local": "Lae enda seadmesse",
"image_saved": "Pilt salvestatud Galeriisse",
"image_saved_error": "Pildi salvestamine ebaõnnestus",
"wrong_link": "Vale link"
},
"drafts": {
"title": "Drafts",
"load_error": "Could not load drafts",
"empty_list": "Nothing here",
"deleted": "Draft deleted"
"title": "Mustandid",
"load_error": "Mustandite laadimine ei õnnestunud",
"empty_list": "Siin pole midagi",
"deleted": "Mustand kustutatud"
},
"schedules": {
"title": "Schedules",
"empty_list": "Nothing here",
"deleted": "Scheduled post deleted",
"move": "Move to drafts",
"moved": "Moved to drafts"
"title": "Planeeritud",
"empty_list": "Siin pole midagi",
"deleted": "Ajastatud postitus kustutatud",
"move": "Teisalda mustanditesse",
"moved": "Teisaldatud mustanditesse"
},
"bookmarks": {
"title": "Bookmarks",
"load_error": "Could not load bookmarks",
"empty_list": "Nothing here",
"deleted": "Bookmark removed",
"search": "Search in bookmarks",
"added": "Added to bookmarks",
"add": "Add to bookmarks"
"title": "Järjehoidjad",
"load_error": "Järjehoidjad ei saanud laadida",
"empty_list": "Siin pole midagi",
"deleted": "Järjehoidja eemaldatud",
"search": "Otsi järjehoidjatest",
"added": "Lisatud järjehoidjatesse",
"add": "Lisa järjehoidjatesse"
},
"report": {
"added": "Reported objectionable content"
"added": "Teavitatud ebasobivast sisust"
},
"favorites": {
"title": "Favorites",
"load_error": "Could not load favorites",
"empty_list": "Nothing here",
"search": "Search in favorites"
"title": "Lemmikud",
"load_error": "Lemmikute laadimine ebaõnnestus",
"empty_list": "Siin pole midagi",
"search": "Otsi lemmikute hulgast"
},
"auth": {
"invalid_pin": "Invalid pin code, please check and try again",
"invalid_username": "Invalid username, please check and try again",
"already_logged": "You are already logged in, please try to add another account",
"invalid_credentials": "Invalid credentials, please check and try again",
"unknow_error": "Unknown error, please write to support@ecency.com"
"invalid_username": "Vigane kasutajanimi, palun kontrolli üle ja proovi uuesti",
"already_logged": "Oled juba sisse logitud, palun proovi lisada teine kasutaja",
"invalid_credentials": "Vigased andmed, palun kontrolli ja proovi uuesti",
"unknow_error": "Tundmatu viga, palun kirjuta meile support@ecency.com"
},
"payout": {
"potential_payout": "Potential Payout",
"promoted": "Promoted",
"author_payout": "Author Payout",
"curation_payout": "Curation Payout",
"potential_payout": "Potentsiaalne Väljamakse",
"promoted": "Sponsitud",
"author_payout": "Autoritasu",
"curation_payout": "Hääletajate tasu",
"payout_date": "Väljamakse",
"beneficiaries": "Kasusaajad",
"warn_zero_payout": "Kogus peab väljamakseks olema vähemalt $0.02",
"breakdown": "Breakdown"
"breakdown": "Analüüs"
},
"post_dropdown": {
"copy": "kopeeri link",
@ -456,32 +457,32 @@
"transfer": {
"from": "Kellelt",
"to": "Kellele",
"amount_information": "Drag the slider to adjust the amount",
"amount_information": "Koguse muutmiseks liiguta liugurit",
"amount": "Kogus",
"memo": "Märge",
"information": "Oled kindel, et soovid raha üle kanda?",
"amount_desc": "Saldo",
"memo_desc": "See märge on avalik",
"convert_desc": "Convert takes 3.5 days and NOT recommended IF HBD price is higher than $1",
"convert_desc": "Vahetamine võtab 3,5 päeva ja pole soovitatav kui HBD hind on kõrgem kui $1",
"to_placeholder": "Kasutajanimi",
"memo_placeholder": "Jäta oma märkmed siia",
"transfer_token": "Ülekanne",
"purchase_estm": "Purchase Points",
"convert": "Convert HBD to HIVE",
"points": "Gift Points to someone",
"purchase_estm": "Osta punkte",
"convert": "Vaheta HBD HIVEks",
"points": "Kingi kellelegi punkte",
"transfer_to_saving": "Kanna säästudesse",
"powerUp": "Lisa võimsust",
"withdraw_to_saving": "Withdraw To Saving",
"steemconnect_title": "Hivesigner Transfer",
"estimated_weekly": "Estimated Weekly",
"destination_accounts": "Destination Accounts",
"stop_information": "Are you sure want to stop?",
"percent": "Percent",
"auto_vests": "Auto Vests",
"withdraw_to_saving": "Liiguta hoiusesse",
"steemconnect_title": "Hivesigneri ülekanne",
"estimated_weekly": "Prognoositud nädalane",
"destination_accounts": "Saaja Kontod",
"stop_information": "Oled kindel, et soovid peatada?",
"percent": "Protsent",
"auto_vests": "Automaatne Tulu",
"save": "SALVESTA",
"percent_information": "Percent info",
"percent_information": "Protsendi info",
"next": "EDASI",
"delegate": "Delegate",
"delegate": "Volita",
"power_down": "Power Down",
"withdraw_steem": "Võta HIVE välja",
"withdraw_sbd": "Võta HIVE Dollar välja",
@ -495,64 +496,64 @@
"next": "EDASI",
"account": {
"title": "Võimenda kasutajat",
"desc": "30 days delegation will boost your votes and social activities and give you more actions with more Resource Credits."
"desc": "30-päevane volitus suurendab teie häält ja sotsiaalset tegevusi ning annab teile rohkem tegevusi koos rohkemate ressursipunktidega."
}
},
"free_estm": {
"title": "Free Points",
"button": "SPIN & WIN",
"get_spin": "5 SPINS",
"spin_right": "Spin Left",
"timer_text": "Next free spin in"
"title": "Tasuta punktid",
"button": "KEERUTA & VÕIDA",
"get_spin": "5 KEERUTUST",
"spin_right": "Keerutust järgi",
"timer_text": "Järgmine tasuta keerutus"
},
"promote": {
"title": "Promote",
"days": "days",
"user": "User",
"permlink": "Post",
"permlinkPlaceholder": "username/permlink",
"information": "Are you sure to promote?"
"title": "Reklaami",
"days": "päeva",
"user": "Kasutaja",
"permlink": "Postita",
"permlinkPlaceholder": "kasutajanimi/permlink",
"information": "Olete kindel, et soovite reklaamida?"
},
"boostPost": {
"title": "Boost"
"title": "Võimenda"
},
"voters_dropdown": {
"rewards": "REWARDS",
"percent": "PERCENT",
"time": "TIME"
"rewards": "TASUD",
"percent": "PROTSENT",
"time": "AEG"
},
"reblog": {
"title": "Reblog Info"
"title": "Jaga infot"
},
"dsteem": {
"date_error": {
"device_time": "Your device time;",
"current_time": "Current time;",
"information": "We noticed that your device has incorrect date or time. Please fix Date & Time or Set Automatically and try again."
"device_time": "Seadme kellaaeg;",
"current_time": "Praegune kellaaeg;",
"information": "Märkasime, et teie seadme kellaaeg ja kuupäev on vale. Muuda kellaaeg ja kuupäev või säti automaatseks ning proovi siis uuesti."
}
},
"comments": {
"title": "Kommentaarid",
"reveal_comment": "Reveal comment",
"read_more": "Read more comments",
"more_replies": "more replies"
"reveal_comment": "Näita kommentaari",
"read_more": "Näita rohkem kommentaare",
"more_replies": "rohkem vastuseid"
},
"search_result": {
"others": "Others",
"others": "Muud",
"best": {
"title": "Best"
"title": "Parimad"
},
"people": {
"title": "People"
"title": "Inimesed"
},
"topics": {
"title": "Topics"
"title": "Teemad"
},
"communities": {
"title": "Communities",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
"title": "Grupid",
"subscribe": "Liitu",
"unsubscribe": "Lahku",
"subscribers": "Liikmed",
"posters": "Postitajad",
"posts": "Post"
},
@ -580,5 +581,18 @@
"user": {
"follow": "Jälgi",
"unfollow": "Lõpeta jälgimine"
},
"communities": {
"joined": "Liikmelisus",
"discover": "Avasta"
},
"empty_screen": {
"nothing_here": "Siin pole midagi"
},
"beneficiary_modal": {
"percent": "Protsent",
"username": "Kasutajanimi",
"addAccount": "Lisa konto",
"save": "Salvesta"
}
}

View File

@ -2,11 +2,11 @@
"wallet": {
"curation_reward": "پاداش مشارکت",
"author_reward": "پاداش نویسنده",
"comment_benefactor_reward": "Benefactor Reward",
"claim_reward_balance": "Claim Reward ",
"transfer": "انتقال دادن",
"transfer_to_vesting": "To Vesting",
"transfer_from_savings": "From Savings",
"comment_benefactor_reward": "پاداش حامی",
"claim_reward_balance": "دریافت پاداش",
"transfer": "انتقال",
"transfer_to_vesting": "واگذاری",
"transfer_from_savings": "از پس انداز",
"withdraw_vesting": "کم کردن قدرت",
"fill_order": "سفارش",
"post": "پست",
@ -15,131 +15,131 @@
"vote": "رأی",
"reblog": "اشتراک گذاری",
"login": "ورود",
"incoming_transfer_title": "تراکنش ورودی",
"outgoing_transfer_title": "تراکنش خروجی",
"incoming_transfer_title": "Incoming transfer",
"outgoing_transfer_title": "انتقال خروجی",
"checkin_extra": "پاداش",
"delegation": "اجاره",
"delegations": "Delegations",
"delegations": "اجاره ها",
"delegation_title": "پاداش اجاره دادن",
"delegation_desc": "Earn Points everyday for delegation",
"delegation_desc": "کسب امیتاز برای اجاره",
"post_title": "امتیاز برای ایجاد پست",
"comment_title": "امتیاز برای نظر دادن",
"vote_title": "امتیاز برای رای دادن",
"reblog_title": "امتیاز برای اشتراک گذاری",
"login_title": "امتیاز برای ورود به حساب کاربری",
"checkin_title": "Points for heartbeat",
"referral": "Referral",
"referral_title": "Referral rewards",
"referral_desc": "Invite friends and earn Points",
"checkin_extra_title": "استفاده از پاداش",
"no_activity": "No recent activity",
"checkin_title": "امتیاز برای تپش قلب",
"referral": "معرف",
"referral_title": "پاداش های معرفی",
"referral_desc": "دوست ها را دعوت کنید و امیتاز کسب کنید",
"checkin_extra_title": "پاداش استفاده",
"no_activity": "اخیراً فعالیتی انجام نشده است",
"outgoing_transfer_description": "",
"incoming_transfer_description": "",
"post_desc": "You can earn point by posting regularly. Posting gives you upto 15 points.",
"comment_desc": "Each comment you make helps you to grow your audience and also earns you upto 5 points.",
"checkin_desc": "Checking in regularly gives you 0.25 points.",
"vote_desc": "By voting you give reward to other creators and also earn back upto 0.01 x vote weight points.",
"reblog_desc": "Share what post you like with your friends and earn points.",
"login_desc": "When you login into app first time you earn 100 points.",
"checkin_extra_desc": "Consistent use of app gives you extra chances to earn more points, be more active and earn more.",
"dropdown_transfer": "Gift",
"dropdown_promote": "Promote",
"dropdown_boost": "Boost",
"post_desc": "شما میتوانید با ایجاد پست بطور منظم، الا ۱۵ امتیاز بدست بیارید.",
"comment_desc": "هر نظری که ثبت میکنید باعث میشود مخاطبان و دوستان خود را افزایش دهید و همچنین ۵ امتیاز را به همراه دارد.",
"checkin_desc": "ورود به سیستم، بطور منظم ۰.۲۳ امیتاز بشما میدهد.",
"vote_desc": "شما با رای دادن به آثار دیگران قدردانی خود را نشان میدهید و علاوه بر آن به میزان (0.01 ×میزان رای شما ) امتیاز دریافت می کنید.",
"reblog_desc": "پست های مورد علاقه خود را با دوستانتان به اشتراک بگذارید و امتیاز دریافت کنید.",
"login_desc": "وقتی که برای اولین باز به برنامه وارد شوید ۱۰۰ امیتاز کسب میکنید.",
"checkin_extra_desc": "استفاده مداوم از برنامه به شما شانس کسب امتیاز بیشتر را میدهد، بیشتر فعال باشید و بیشتر امتیاز کسب کنید.",
"dropdown_transfer": "هدیه",
"dropdown_promote": "تبلیغ",
"dropdown_boost": "ارتقاء",
"from": "از",
"to": "به",
"estimated_value_desc": "According to purchase value",
"estimated_value": "Estimated value",
"estimated_amount": "Vote value",
"amount_information": "Drag the slider to adjust the amount",
"estimated_value_desc": "با توجه به ارزش خرید",
"estimated_value": "ارزش برآورد شده",
"estimated_amount": "ارزش رای",
"amount_information": "کشیدن لغزنده برای تنظیم مقدار",
"amount": "مقدار",
"memo": "یادداشت",
"information": "Are you sure to transfer funds?",
"information": "آیا مطمئن هستید که وجوه را منتقل می کنید؟",
"amount_desc": "موجودی",
"memo_desc": "این یادداشت عمومی است",
"to_placeholder": "نام کاربری",
"memo_placeholder": "یادداشت های خود را در اینجا وارد کنید",
"transfer_token": "انتقال دادن",
"purchase_estm": "GET POINTS",
"points": "Gift Points to someone",
"transfer_to_saving": "To Saving",
"purchase_estm": "گرفتن امتیاز",
"points": "هدیه دادن امیتازات به کسی دیگر",
"transfer_to_saving": "به پس انداز",
"powerUp": "بالا بردن قدرت",
"withdraw_to_saving": "Withdraw Saving",
"steemconnect_title": "Hivesigner Transfer",
"withdraw_to_saving": "برداشت از پس انداز",
"steemconnect_title": "انتقال از Hivesigner",
"next": "بعدی",
"delegate": "Delegate",
"delegate": "اجاره",
"power_down": "کم کردن قدرت",
"withdraw_steem": "Withdraw HIVE",
"withdraw_sbd": "Withdraw HBD",
"transfer_to_savings": "To Savings",
"convert": "Convert",
"escrow_transfer": "Escrow Transfer",
"escrow_dispute": "Escrow Dispute",
"escrow_release": "Escrow Release",
"escrow_approve": "Escrow Approve",
"cancel_transfer_from_savings": "Cancel From Savings",
"withdraw_steem": "برداشت HIVE",
"withdraw_sbd": "برداشتHBD",
"transfer_to_savings": "به پس انداز",
"convert": "تبدیل",
"escrow_transfer": "انتقال اسکرو",
"escrow_dispute": "اختلاف سپرده",
"escrow_release": "رها کردن سپرده",
"escrow_approve": "تایید سپرده",
"cancel_transfer_from_savings": "لغو پس انداز",
"delegate_vesting_shares": "اجاره",
"fill_convert_request": "Convert Executed",
"fill_transfer_from_savings": "Savings Executed",
"fill_vesting_withdraw": "PowerDown executed",
"fill_convert_request": "تبدیل اجرا شد",
"fill_transfer_from_savings": "پس انداز اجرا اشد",
"fill_vesting_withdraw": "کاهش انرژی اجرا شد",
"estm": {
"title": "امتیازها",
"buy": "GET POINTS"
"buy": "امتیاز گرفتن"
},
"savingsteem": {
"title": "HIVE Savings"
"title": "پس انداز های HIVE"
},
"savingsbd": {
"title": "HBD Savings"
"title": "پس اندازهای HBD"
},
"steem": {
"title": "HIVE",
"buy": "GET HIVE"
"buy": "گرفتن HIVE"
},
"sbd": {
"title": "HBD",
"buy": "GET HBD"
"buy": "گرفتن HBD"
},
"steem_power": {
"title": "HIVE POWER"
"title": "توانایی HIVE"
},
"btc": {
"title": "BTC",
"buy": "GET BTC",
"address": "RECEIVE"
"buy": "گرفتن BTC",
"address": "دريافت كردن"
}
},
"notification": {
"vote": "voted",
"unvote": "unvoted",
"reply": "replied to",
"mention": "mentioned in",
"vote": "رای داده شده",
"unvote": "رأی داده نشده",
"reply": "پاسخ داد به",
"mention": "نام برد به",
"follow": "شما را دنبال میکند",
"unfollow": "شما را دنبال نمیکند",
"ignore": "شما را نادیده گرفته",
"reblog": "reblogged",
"transfer": "transferred",
"spin": "Time to earn more Points",
"inactive": "Be active! Write a post, continue earning",
"referral": "joined with your referral, welcome them",
"reblog": "اشتراک شد",
"transfer": "منتقل شد",
"spin": "وقت کسب امتیاز بیشتر است",
"inactive": "فعال باشید! یک پست بنویسید، ادامه درامد دهید",
"referral": "معرف شما پیوست، به آنها خوش آمد بگوید",
"notification": "اطلاعیه ها",
"leaderboard": "جدول رده بندی",
"epoint": "امتیازها",
"leaderboard_title": "Top Users",
"leaderboard_title": "کاربران برتر",
"recent": "اخیر",
"yesterday": "دیروز",
"this_week": "این هفته",
"this_month": "این ماه",
"older_then": "قدیمی تر از 1 ماه",
"activities": "All",
"activities": "همه",
"replies": "پاسخ‌ها",
"mentions": "Mentions",
"reblogs": "Reblogs",
"noactivity": "No recent activity"
"mentions": "خطاب ها",
"reblogs": "اشترک ها",
"noactivity": "اخیراً فعالیتی انجام نشده است"
},
"leaderboard": {
"daily": "DAILY",
"weekly": "WEEKLY",
"monthly": "MONTHLY"
"daily": "روزانه",
"weekly": "هفتگی",
"monthly": "ماهانه"
},
"messages": {
"comingsoon": "قابلیت ارسال پیام به زودی ارائه خواهد شد!"
@ -158,21 +158,21 @@
"hours": "ساعت ها",
"voting_power": "قدرت رأی‌ دهی",
"login_to_see": "ورود به سیستم برای دیدن",
"follow_people": "Follow some people to fill your feed",
"follow_communities": "Join some communities to fill your feed",
"follow_people": "برخی افراد را دنبال کنید تا فید تان پر شود",
"follow_communities": "به برخی از کمیته ها بپیوندید تا فید شما پر شود",
"havent_commented": "هنوز نظری نداده",
"havent_posted": "هنوز مطلبی ننوشته اید",
"steem_power": "Hive Power",
"steem_power": "توانایی HIVE",
"next_power_text": "روز باقی مانده تا کاهش قدرت،",
"days": "روزها",
"day": "روز",
"steem_dollars": "Hive Dollars",
"savings": "پس انداز",
"edit": {
"display_name": "Display Name",
"about": "About",
"location": "Location",
"website": "Website"
"display_name": "نام نمایشی",
"about": "درباره",
"location": "موقیعت",
"website": "وب سایت"
}
},
"settings": {
@ -192,7 +192,7 @@
"transfers": "تراکنش ها"
},
"pincode": "Pincode",
"reset_pin": "Reset Pin Code",
"reset_pin": "تنظیم مجدد پن کد",
"reset": "راه اندازی مجدد",
"nsfw_content": "NSFW",
"send_feedback": "ارسال پیشنهادات و انتقادات",
@ -205,44 +205,44 @@
},
"feedback_success": "ایمیل با موفقیت باز شد",
"feedback_fail": "سرویس دهنده ایمیل نمی تواند باز شود",
"server_fail": "Server not available"
"server_fail": "سرور در دسترس نیست"
},
"voters": {
"voters_info": "اطلاعات رأی دهندگان",
"no_user": "User is not found."
"no_user": "کاربر پیدا نشد."
},
"login": {
"signin": "ورود",
"signup": "JOIN NOW",
"signin_title": "To get all the benefits of using Ecency",
"signup": "حالا پیوستن",
"signin_title": "برای دریافت تمام مزایای استفاده از Ecency",
"username": "نام کاربری",
"password": "رمز عبور و یا WIF",
"description": "By signing in, you agree to our Terms of Services and Privacy Policies.",
"description": "با ثبت نام شما موافق قوانین و سیاست های حفظ حریم خصوصی ما خواهید بود. ",
"cancel": "انصراف",
"login": "ورود به سیستم",
"steemconnect_description": "If you don't want to keep your password encrypted and saved on your device, you can use Hivesigner.",
"steemconnect_fee_description": "info"
"steemconnect_description": "اگر نمی خواهید رمز عبورتان رمزنگاری و در دستگاهتان ذخیره شود، میتوانید از Hivesigner استفاده کنید.",
"steemconnect_fee_description": "اطلاعات"
},
"register": {
"button": "Sign Up",
"button": "ثبت نام",
"title": "ثبت‌نام کنید",
"username": "Pick a username",
"mail": "Enter your email address",
"ref_user": "Referred user (Optional)",
"500_error": "Your request could not be processed, signup queue is likely full! Try again in few minutes...",
"title_description": "One account to manage everything",
"form_description": "By signing up with us, you agree to our Terms of Service and Privacy Policies."
"username": "نام کاربری را انتخاب کنید",
"mail": "آدرس ایمیل خود را وارد کنید",
"ref_user": "کاربر معدفی شده (اختیاری)",
"500_error": "درخواست شما پردازش نشد ، صف ثبت نام احتمالاً پر است! چند دقیقه دیگر دوباره امتحان کنید...",
"title_description": "یک حساب برای مدیریت همه چیز",
"form_description": "با ثبت نام کردن، شما با شرایط خدمات و قوانین خصوصی ما موافقت می کنید."
},
"home": {
"feed": "خبرنامه",
"popular": "مورد علاقه",
"top": "Top",
"hot": "Hot",
"new": "New",
"blog": "Blog",
"top": "بالا",
"hot": "داغ",
"new": "جدید",
"blog": "وبلاگ",
"posts": "Post",
"friends": "Friends",
"communities": "Communities"
"friends": "دوستان",
"communities": "انجمن ها"
},
"side_menu": {
"profile": "نمایه",
@ -252,13 +252,14 @@
"schedules": "جدول زمانی",
"gallery": "گالری",
"settings": "تنظیمات",
"communities": "Communities",
"add_account": "اضافه کردن حساب کاربری",
"logout": "خروج از حساب",
"cancel": "صرف نظر",
"logout_text": "آیا مطمئنید که می‌خواهید خارج شوید؟",
"create_a_new_account": "Create a new account",
"add_an_existing_account": "Add an existing account",
"accounts": "Accounts"
"create_a_new_account": "ایجاد یک حساب جدید",
"add_an_existing_account": "یک حساب موجود اضافه کنید",
"accounts": "حساب ها"
},
"header": {
"title": "برای شخصی سازی فید های خود وارد شوید",
@ -272,33 +273,33 @@
},
"editor": {
"title": "تیتر",
"tags": "Tags (separate with space)",
"default_placeholder": "Tell us something...",
"reply_placeholder": "Add your reply...",
"tags": "برچسب ها (جدا با فاصله)",
"default_placeholder": "چیزی به ما بگویید...",
"reply_placeholder": "پاسخ خود را اضافه کنید...",
"publish": "نشر",
"reply": "پاسخ دادن",
"open_gallery": "باز کردن گالری",
"capture_photo": "گرفتن عکس",
"limited_tags": "Only 10 tags allowed, remove some",
"limited_length": "Maximum length of each tag should be 24",
"limited_dash": "Use one dash in each tag",
"limited_space": "Use space to separate tags",
"limited_lowercase": "Only use lower letters in tag",
"limited_characters": "Use only lowercase letters, digits and one dash",
"limited_firstchar": "Tag must start with a letter",
"limited_lastchar": "Tag must end with letter or number",
"setting_schedule": "Scheduling Time",
"setting_reward": "Reward",
"setting_beneficiary": "Beneficiary",
"reward_default": "Default 50% / 50%",
"reward_power_up": "Power Up 100%",
"reward_decline": "Decline Payout",
"beneficiaries": "Beneficiaries",
"options": "Options",
"my_blog": "My Blog",
"my_communities": "My Communities",
"top_communities": "Top Communities",
"schedule_modal_title": "Schedule Post"
"limited_tags": "فقط ۱۰ برچسب مجاز است، برخی را بردارید",
"limited_length": "حداکثر طول هر برچسب باید ۲۴ باشد",
"limited_dash": "در هر برچسب از یک خط تیره استفاده کنید",
"limited_space": "برای جدا کردن برچسب ها از فاصله استفاده کنید",
"limited_lowercase": "فقط از حروف کوچک در برچسب استفاده کنید",
"limited_characters": "فقط از حروف کوچک ، رقم و یک خط تیره استفاده کنید",
"limited_firstchar": "برچسب باید با یک حرف شروع شود",
"limited_lastchar": "برچسب باید با یک حرف یا عدد پایان یابد",
"setting_schedule": "زمان برنامه‌ریزی",
"setting_reward": "پاداش",
"setting_beneficiary": "ذینفعان",
"reward_default": "پیش‌فرض ۵۰٪ / ۵۰٪",
"reward_power_up": "۱۰۰٪ بالا بردن قدرت",
"reward_decline": "امتناع از پرداخت",
"beneficiaries": "ذینفعان",
"options": "گزینه‌ها",
"my_blog": "وبلاگ من",
"my_communities": "انجمن ها",
"top_communities": "جوامع برتر",
"schedule_modal_title": "برنامه ریزی پست"
},
"pincode": {
"enter_text": "Enter pin to unlock",
@ -314,25 +315,25 @@
"fail": "ناموفق!",
"move": "انتقال",
"move_question": "آیا مطمئن هستید که می خواهید به پیشنویس ها منتقل کنید؟",
"success_shared": "Success! Content submitted!",
"success_shared": "موفق باشید! محتوا ارسال شد!",
"success_moved": "به پیشنویس ها منتقل شد",
"permission_denied": "خطای دسترسی",
"permission_text": "Please, go to phone Settings and change Ecency app permissions.",
"key_warning": "Operation requires active key or master password, please relogin!",
"permission_text": "لطفا به تنظیمات تلفن خود رفته و دسترسی Ecency را تغییر دهید.",
"key_warning": "این عملیات به کلید فعال یا گذرواژه اصلی نیاز دارد ، لطفاً دوباره وارد سیستم شوید!",
"success_rebloged": "Rebloged!",
"already_rebloged": "شما قبلا به اشتراک گذاشته اید!",
"success_favorite": "Favorite added!",
"success_unfavorite": "Favorite removed!",
"success_follow": "Follow success!",
"fail_follow": "Follow failed!",
"success_subscribe": "Subscribe success!",
"fail_subscribe": "Subscribe failed!",
"success_leave": "Leave success!",
"fail_leave": "Leave failed!",
"success_mute": "Mute success!",
"success_favorite": "مورد دلخواه اضافه شد",
"success_unfavorite": "مورد دلخواه پاک شد!",
"success_follow": "دنبال، موفق شد!",
"fail_follow": "دنبال، ناکام شد!",
"success_subscribe": "اشتراک، موفق شد!",
"fail_subscribe": "اشتراک، ناکام شد!",
"success_leave": "ترک، موفق شد!",
"fail_leave": "ترک، ناکام شد!",
"success_mute": "بی صدا، موفق شد!",
"success_unmute": "Unmute success!",
"success_unfollow": "Unfollow success!",
"fail_unfollow": "Unfollow failed!",
"success_unfollow": "دنبال کردن لغو شد!",
"fail_unfollow": "لغو دنبال، ناکام شد!",
"warning": "اخطار",
"invalid_pincode": "Invalid pin code, please check and try again.",
"remove_alert": "Are you sure want to remove?",
@ -346,38 +347,38 @@
"confirm": "تأیید",
"removed": "حذف شد",
"same_user": "این کاربر قبلا به لیست اضافه شده است",
"unknow_error": "An error occurred",
"error": "Error",
"fetch_error": "Connection issue, change server and restart",
"connection_fail": "Connection Failed!",
"connection_success": "Successfully connected!",
"checking": "Checking...",
"external_link": "Open in Browser",
"not_existing_post": "The post does not exist! Please check permlink and author.",
"google_play_version": "We noticed that your device has old version of Google Play. Please update Google Play services and try again!",
"rc_down": "Not enough resource credits to perform an action! \n\nBoost your account to continue enjoy the experience. Do you want to boost your account, now?",
"payloadTooLarge": "File size too big, please resize or upload smaller image",
"qoutaExceeded": "Upload quota exceeded",
"invalidImage": "Invalid image, try different file",
"something_wrong": "Something went wrong.",
"something_wrong_alt": "Try https://ecency.com",
"something_wrong_reload": "Reload",
"can_not_be_empty": "Title and body can not be empty!"
"unknow_error": "يک خطا رخ داده است",
"error": "خطا",
"fetch_error": "مشکل اتصال ، تغییر سرور و راه اندازی مجدد",
"connection_fail": "اتصال انجام نشد!",
"connection_success": "اتصال با موفقیت انجام شد!",
"checking": "در حال بررسی...",
"external_link": "باز کردن در مرورگر",
"not_existing_post": "پست موجود نیست! لطفاً لینک ثابت و نویسنده را بررسی کنید.",
"google_play_version": "متوجه شدیم که دستگاه شما دارای نسخه قدیمی Google Play است. لطفاً خدمات Google Play را به روز کنید و دوباره امتحان کنید!",
"rc_down": "اعتبار منابع کافی برای انجام عملی نیست!\n\nبرای لذت بردن از تجربه ، حساب خود را تقویت کنید. آیا می خواهید حساب خود را تقویت کنید?",
"payloadTooLarge": "اندازه فایل خیلی بزرگ است ، لطفاً اندازه کوچکتر را تغییر دهید یا تصویر کوچکتر را بارگذاری کنید",
"qoutaExceeded": "از سهمیه بارگذاری بیشتر شد",
"invalidImage": "تصویر نامعتبر است ، فایل دیگری را امتحان کنید",
"something_wrong": "مشکلی پیش آمد.",
"something_wrong_alt": "Https://ecency.com را امتحان کنید",
"something_wrong_reload": "ﻧﻮﺳﺎﺯﯼ",
"can_not_be_empty": "عنوان و متن نمی تواند خالی باشد!"
},
"post": {
"reblog_alert": "Are you sure, you want to reblog?",
"removed_hint": "Content is not available",
"copy_link": "Copy link",
"reblogged": "reblogged by",
"sponsored": "SPONSORED",
"open_thread": "Open thread",
"image": "Image",
"link": "Link",
"gallery_mode": "Gallery mode",
"save_to_local": "Download to device",
"image_saved": "Image saved to Photo Gallery",
"image_saved_error": "Error Saving Image",
"wrong_link": "Wrong link"
"reblog_alert": "آیا مطمئن هستید که می‌خواهید دوباره به اشتراک بگذارید?",
"removed_hint": "محتوا در دسترس نیست",
"copy_link": "کاپی لنک",
"reblogged": "اشتراک مجدد توسط",
"sponsored": "اسپانسر شده",
"open_thread": "بازکردن موضوع",
"image": "تصویر",
"link": "پیوند",
"gallery_mode": "حالت گالری",
"save_to_local": "بارگیری در دستگاه",
"image_saved": "تصویر در گالری عکس ذخیره شد",
"image_saved_error": "خطایی در ذخیره عکس بوجود آمد",
"wrong_link": "لنک اشتباه"
},
"drafts": {
"title": "پیشنویس ها",
@ -402,7 +403,7 @@
"add": "اضافه کردن به صفحات مورد علاقه"
},
"report": {
"added": "Reported objectionable content"
"added": "محتوای قابل اعتراض گزارش شده است"
},
"favorites": {
"title": "برگزیده‌ها",
@ -415,7 +416,7 @@
"invalid_username": "نام کاربری نامعتبر، لطفا چک کنید و دوباره امتحان کنید",
"already_logged": "شما در حال حاظر وارد شده اید، لطفا با یک حساب کاربری دیگر تلاش کنید",
"invalid_credentials": "اعتبار نامه غیر معتبر، لطفا چک کنید و دوباره تلاش کنید",
"unknow_error": "Unknown error, please write to support@ecency.com"
"unknow_error": "خطای ناشناخته ، لطفا به ادرس support@ecency.com به تماس شوید"
},
"payout": {
"potential_payout": "پرداخت های بالقوه",
@ -423,9 +424,9 @@
"author_payout": "پاداش نویسنده",
"curation_payout": "پاداش مشارکت",
"payout_date": "پرداخت",
"beneficiaries": "Beneficiaries",
"warn_zero_payout": "Amount must reach $0.02 for payout",
"breakdown": "Breakdown"
"beneficiaries": "ذینفعان",
"warn_zero_payout": "مبلغ برای پرداخت باید به ۰. ۰۲ دلار برسد",
"breakdown": "درهم شکستن"
},
"post_dropdown": {
"copy": "کپی لینک",
@ -433,9 +434,9 @@
"reply": "پاسخ دادن",
"share": "درمیان گذاری",
"bookmarks": "اضافه کردن به صفحات مورد علاقه",
"promote": "promote",
"boost": "boost",
"report": "report"
"promote": "تبلیغ",
"boost": "ارتقاء",
"report": "گزارش"
},
"deep_link": {
"no_existing_user": "کاربری موجود نیست",
@ -446,139 +447,152 @@
"comments": "نظرات"
},
"comment_filter": {
"trending": "TOP",
"reputation": "REPUTATION",
"votes": "VOTE",
"age": "AGE",
"top": "TOP",
"time": "TIME"
"trending": "بالا",
"reputation": "اعبتار",
"votes": "رای",
"age": "سن",
"top": "بالا",
"time": "وقت"
},
"transfer": {
"from": "از",
"to": "به",
"amount_information": "Drag the slider to adjust the amount",
"amount_information": "برای تنظیم مقدار ، نوار لغزنده را بکشید",
"amount": "مقدار",
"memo": "یادداشت",
"information": "Are you sure to transfer funds?",
"information": "آیا مطمئن هستید که وجوه را منتقل می کنید?",
"amount_desc": "موجودی",
"memo_desc": "این یادداشت عمومی است",
"convert_desc": "Convert takes 3.5 days and NOT recommended IF HBD price is higher than $1",
"convert_desc": "تبدیل 3.5 روز طول می کشد و توصیه نمی شود اگر قیمت HBD بالاتر از 1 دلار باشد",
"to_placeholder": "نام کاربری",
"memo_placeholder": "یادداشت های خود را در اینجا وارد کنید",
"transfer_token": "انتقال",
"purchase_estm": "Purchase Points",
"convert": "Convert HBD to HIVE",
"points": "Gift Points to someone",
"purchase_estm": "خریداری امتیاز",
"convert": "تبدیل HBD به HIVE",
"points": "به کسی امتیاز هدیه دهید",
"transfer_to_saving": "انتقال به پس انداز",
"powerUp": "بالا بردن قدرت",
"withdraw_to_saving": "برداشت و انتقال به پس انداز",
"steemconnect_title": "Hivesigner Transfer",
"estimated_weekly": "Estimated Weekly",
"destination_accounts": "Destination Accounts",
"stop_information": "Are you sure want to stop?",
"percent": "Percent",
"steemconnect_title": "انتقال از Hivesigner",
"estimated_weekly": "برآورد هفتگی",
"destination_accounts": "حسابهای مقصد",
"stop_information": "مطمئناً می خواهید متوقف شوید؟",
"percent": "درصدی",
"auto_vests": "Auto Vests",
"save": "SAVE",
"percent_information": "Percent info",
"save": "ذخیره",
"percent_information": "اطلاعات درصد",
"next": "بعدی",
"delegate": "Delegate",
"power_down": "Power Down",
"withdraw_steem": "Withdraw HIVE",
"withdraw_sbd": "Withdraw HIVE Dollar",
"incoming_funds": "Incoming Funds",
"stop": "Stop",
"address_view": "View address"
"delegate": "اجاره",
"power_down": "کم کردن قدرت",
"withdraw_steem": "برداشت HIVE",
"withdraw_sbd": "برداشت دلار HIVE",
"incoming_funds": "وجوه دریافتی",
"stop": "توقف",
"address_view": "مشاهده آدرس"
},
"boost": {
"title": "Get Points",
"buy": "GET Points",
"next": "NEXT",
"title": "گرفتن امتیاز",
"buy": "گرفتن امتیاز",
"next": "بعدی",
"account": {
"title": "Get Account Boost",
"desc": "30 days delegation will boost your votes and social activities and give you more actions with more Resource Credits."
"title": "حساب را تقویت دهید",
"desc": "تفویض 30 روزه آرا و فعالیتهای اجتماعی شما را افزایش داده و اقدامات بیشتری را با اعتبارات بیشتر به شما می دهد."
}
},
"free_estm": {
"title": "Free Points",
"button": "SPIN & WIN",
"get_spin": "5 SPINS",
"spin_right": "Spin Left",
"timer_text": "Next free spin in"
"title": "گرفتن امتیاز",
"button": "چرخش و برنده شدن",
"get_spin": "5 چرخش",
"spin_right": "چرخش باقی",
"timer_text": "چرخش رایگان بعدی در"
},
"promote": {
"title": "Promote",
"days": "days",
"user": "User",
"permlink": "Post",
"permlinkPlaceholder": "username/permlink",
"information": "Are you sure to promote?"
"title": "تبلیغ",
"days": "روزها",
"user": "کاربر",
"permlink": "پست",
"permlinkPlaceholder": "نام کاربری/لینک ثابت",
"information": "آیا مطمئناً تبلیغ می کنید"
},
"boostPost": {
"title": "Boost"
"title": "ارتقاء"
},
"voters_dropdown": {
"rewards": "REWARDS",
"percent": "PERCENT",
"time": "TIME"
"rewards": "امتیازات",
"percent": "درصد",
"time": "وقت"
},
"reblog": {
"title": "Reblog Info"
"title": "اطلاعات reblog"
},
"dsteem": {
"date_error": {
"device_time": "Your device time;",
"current_time": "Current time;",
"information": "We noticed that your device has incorrect date or time. Please fix Date & Time or Set Automatically and try again."
"device_time": "زمان دستگاه شما;",
"current_time": "زمان کنونی;",
"information": "متوجه شدیم که دستگاه شما تاریخ یا ساعت نادرستی دارد. لطفاً تاریخ و زمان را برطرف کنید یا به صورت خودکار تنظیم کنید و دوباره امتحان کنید."
}
},
"comments": {
"title": "نظرات",
"reveal_comment": "Reveal comment",
"read_more": "Read more comments",
"more_replies": "more replies"
"reveal_comment": "نشان دادن نظریه",
"read_more": "نظرات بیشتر را بخوانید",
"more_replies": "پاسخ های بیشتر"
},
"search_result": {
"others": "Others",
"others": "دیگر",
"best": {
"title": "Best"
"title": "بهترین"
},
"people": {
"title": "People"
"title": "مردم"
},
"topics": {
"title": "Topics"
"title": "موضوعات"
},
"communities": {
"title": "Communities",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
"posters": "Posters",
"title": "Groups",
"subscribe": "\"پیوستن\"",
"unsubscribe": "ترک کردن",
"subscribers": "اعضاء",
"posters": "پوسترها",
"posts": "Post"
},
"communities_filter": {
"my": "My Communities",
"rank": "Rank",
"subs": "Members",
"new": "New"
"my": "انجمن(های) من",
"rank": "رتبه",
"subs": "اعضاء",
"new": "جدید"
},
"post_result_filter": {
"popularity": "Popularity",
"newest": "Newest",
"relevance": "Relevance"
"popularity": "محبوبیت",
"newest": "جدیدترین",
"relevance": "ارتباط"
},
"other_result_filter": {
"user": "User",
"tag": "Tag"
"user": "کاربر",
"tag": "برچسب"
}
},
"community": {
"new_post": "New Post",
"community": "community",
"details": "Details"
"new_post": "پست جدید",
"community": "انجمن",
"details": "جزئیات"
},
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
"follow": "دنبال کردن",
"unfollow": "عدم دنبال کردن"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Ajastetut",
"gallery": "Galleria",
"settings": "Asetukset",
"communities": "Yhteisöt",
"add_account": "Lisää tili",
"logout": "Kirjaudu ulos",
"cancel": "Peruuta",
@ -538,7 +539,7 @@
"more_replies": "lisää vastauksia"
},
"search_result": {
"others": "Others",
"others": "Muut",
"best": {
"title": "Parhaat"
},
@ -549,7 +550,7 @@
"title": "Aiheet"
},
"communities": {
"title": "Yhteisöt",
"title": "Ryhmät",
"subscribe": "Liity",
"unsubscribe": "Poistu",
"subscribers": "Jäsenet",
@ -580,5 +581,18 @@
"user": {
"follow": "Seuraa",
"unfollow": "Älä seuraa"
},
"communities": {
"joined": "Jäsenyys",
"discover": "Löydä uutta"
},
"empty_screen": {
"nothing_here": "Täällä ei ole mitään"
},
"beneficiary_modal": {
"percent": "Prosenttia",
"username": "Käyttäjänimi",
"addAccount": "Lisää Tili",
"save": "Tallenna"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Mga Iskedyul",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Magdagdag ng Account",
"logout": "Mag-logout",
"cancel": "Kansel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Mga pamayanan",
"title": "Groups",
"subscribe": "Sumali",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Planifications",
"gallery": "Gallerie",
"settings": "Réglages",
"communities": "Communities",
"add_account": "Ajouter un compte",
"logout": "Déconnexion",
"cancel": "Annuler",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communautés",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Frisahteis",
"settings": "Lageinos",
"communities": "Communities",
"add_account": "Anaaiauk rahnein",
"logout": "Afleiþ",
"cancel": "Fraqiþ",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "לוחות זמנים",
"gallery": "גלריה",
"settings": "הגדרות",
"communities": "Communities",
"add_account": "הוסף/י חשבון",
"logout": "התנתק/י",
"cancel": "ביטול",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "निर्धारित",
"gallery": "चित्रशाला",
"settings": "समायोजन",
"communities": "समुदाय",
"add_account": "खता जोड़ें",
"logout": "बहार जाएँ",
"cancel": "रद्द करें",
@ -538,7 +539,7 @@
"more_replies": "अधिक जवाब"
},
"search_result": {
"others": "Others",
"others": "अन्यों",
"best": {
"title": "सर्वश्रेष्ठ"
},
@ -549,7 +550,7 @@
"title": "विषयों"
},
"communities": {
"title": "समुदाय",
"title": "समूह",
"subscribe": "शामिल हों",
"unsubscribe": "छोड़ें",
"subscribers": "सदस्य",
@ -580,5 +581,18 @@
"user": {
"follow": "फॉलो करें",
"unfollow": "अनफॉलो करें"
},
"communities": {
"joined": "सदस्यता",
"discover": "खोजिए"
},
"empty_screen": {
"nothing_here": "कुछ नहीं है यहां"
},
"beneficiary_modal": {
"percent": "प्रतिशत",
"username": "प्रयोक्ता नाम",
"addAccount": "खता जोड़ें",
"save": "रक्षित करें"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Rasporedi",
"gallery": "Galerija",
"settings": "Postavke",
"communities": "Communities",
"add_account": "Dodaj Profil",
"logout": "Odjava",
"cancel": "Poništi",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Időzítések",
"gallery": "Galéria",
"settings": "Beállítások",
"communities": "Communities",
"add_account": "Fiók Hozzáadása",
"logout": "Kijelentkezés",
"cancel": "Elvet",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Közösségek",
"title": "Groups",
"subscribe": "Csatlakozz",
"unsubscribe": "Kilépés",
"subscribers": "Tagok",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Daftar jadwal",
"gallery": "Album",
"settings": "Pengaturan",
"communities": "Communities",
"add_account": "Tambahkan Akun",
"logout": "Keluar",
"cancel": "Batal",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Pianificazioni",
"gallery": "Galleria",
"settings": "Impostazioni",
"communities": "Communities",
"add_account": "Aggiungi Account",
"logout": "Disconnettiti",
"cancel": "Cancella",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "スケジュール",
"gallery": "ギャラリー",
"settings": "設定",
"communities": "Communities",
"add_account": "アカウントを追加",
"logout": "ログアウト",
"cancel": "キャンセル",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Isɣiwas",
"gallery": "Gallery",
"settings": "Iɣewwaṛen",
"communities": "Communities",
"add_account": "Rnu amiḍan",
"logout": "Tuffɣa",
"cancel": "Sefsex",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "Schedules",
"gallery": "Gallery",
"settings": "Settings",
"communities": "Communities",
"add_account": "Add Account",
"logout": "Logout",
"cancel": "Cancel",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "Communities",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

View File

@ -252,6 +252,7 @@
"schedules": "일정",
"gallery": "갤러리",
"settings": "설정",
"communities": "Communities",
"add_account": "계정 추가",
"logout": "로그아웃",
"cancel": "취소",
@ -549,7 +550,7 @@
"title": "Topics"
},
"communities": {
"title": "커뮤니티",
"title": "Groups",
"subscribe": "Join",
"unsubscribe": "Leave",
"subscribers": "Members",
@ -580,5 +581,18 @@
"user": {
"follow": "Follow",
"unfollow": "Unfollow"
},
"communities": {
"joined": "Membership",
"discover": "Discover"
},
"empty_screen": {
"nothing_here": "Nothing here"
},
"beneficiary_modal": {
"percent": "Percent",
"username": "Username",
"addAccount": "Add Account",
"save": "Save"
}
}

Some files were not shown because too many files have changed in this diff Show More