diff --git a/src/components/sideMenu/container/sideMenuContainer.js b/src/components/sideMenu/container/sideMenuContainer.js index 9e76ea1fb..98574640f 100644 --- a/src/components/sideMenu/container/sideMenuContainer.js +++ b/src/components/sideMenu/container/sideMenuContainer.js @@ -30,18 +30,13 @@ class SideMenuContainer extends Component { componentWillMount() { const accounts = []; - const { currentAccount } = this.props; getUserData().then((userData) => { userData.forEach((element) => { - let image = DEFAULT_IMAGE; - if (Object.keys(currentAccount).length !== 0) { - const jsonMetadata = JSON.parse(currentAccount.json_metadata); - if (Object.keys(jsonMetadata).length !== 0) { - image = jsonMetadata.profile.cover_image; - } - } - accounts.push({ name: `@${element.username}`, image }); + accounts.push({ + name: `@${element.username}`, + image: element.avatar ? { uri: element.avatar } : DEFAULT_IMAGE, + }); }); accounts.push({ name: 'Add Account', diff --git a/src/constants/sideMenuItems.js b/src/constants/sideMenuItems.js index 37746b3ab..b0eb3475d 100644 --- a/src/constants/sideMenuItems.js +++ b/src/constants/sideMenuItems.js @@ -42,7 +42,7 @@ const noAuthMenuItems = [ { name: 'Add Account', route: ROUTES.SCREENS.LOGIN, - icon: 'add-circle-outline', + icon: 'plus-square-o', }, { name: 'Settings', diff --git a/src/providers/steem/auth.js b/src/providers/steem/auth.js index 2e340be35..86e5e9379 100644 --- a/src/providers/steem/auth.js +++ b/src/providers/steem/auth.js @@ -21,6 +21,7 @@ export const Login = (username, password) => { posting: null, }; let loginFlag = false; + let avatar = ''; return new Promise((resolve, reject) => { // Get user account data from STEEM Blockchain @@ -53,9 +54,14 @@ export const Login = (username, password) => { } }); + const jsonMetadata = JSON.parse(account.json_metadata); + if (Object.keys(jsonMetadata).length !== 0) { + avatar = jsonMetadata.profile.cover_image; + } if (loginFlag) { const userData = { username, + avatar, authType: 'masterKey', masterKey: '', postingKey: '', @@ -85,10 +91,18 @@ export const Login = (username, password) => { export const loginWithSC2 = async (accessToken) => { await steemConnect.setAccessToken(accessToken); const account = await steemConnect.me(); + let avatar = ''; return new Promise((resolve, reject) => { + + const jsonMetadata = JSON.parse(account.json_metadata); + if (Object.keys(jsonMetadata).length !== 0) { + avatar = jsonMetadata.profile.cover_image; + } + const userData = { username: account.account.name, + avatar, authType: 'steemConnect', masterKey: '', postingKey: '', @@ -99,6 +113,7 @@ export const loginWithSC2 = async (accessToken) => { const authData = { isLoggedIn: true, + currentUsername: account.account.name, }; if (isLoggedInUser(account.account.name)) { @@ -154,6 +169,7 @@ export const setUserDataWithPinCode = data => new Promise((resolve, reject) => { .then(() => { const authData = { isLoggedIn: true, + currentUsername: userData.username, }; setAuthStatus(authData) @@ -227,6 +243,7 @@ export const verifyPinCode = async (data) => { if (loginFlag) { const authData = { isLoggedIn: true, + currentUsername: data.username, }; const response = { accessToken: decryptKey(userData.accessToken, data.pinCode), diff --git a/src/realm/realm.js b/src/realm/realm.js index 218a57bc5..421558db4 100644 --- a/src/realm/realm.js +++ b/src/realm/realm.js @@ -8,6 +8,7 @@ const userSchema = { name: USER_SCHEMA, properties: { username: { type: 'string' }, + avatar: { type: 'string' }, authType: { type: 'string' }, postingKey: { type: 'string' }, activeKey: { type: 'string' }, @@ -22,6 +23,7 @@ const authSchema = { properties: { isLoggedIn: { type: 'bool', default: false }, pinCode: { type: 'string' }, + currentUsername: { type: 'string' }, }, }; @@ -104,7 +106,7 @@ export const getAuthStatus = () => new Promise((resolve, reject) => { try { const auth = realm.objects(AUTH_SCHEMA); if (auth['0']) { - resolve(auth['0'].isLoggedIn); + resolve(auth['0']); } else { resolve(false); } diff --git a/src/screens/authorProfile/screen/authorScreen.js b/src/screens/authorProfile/screen/authorScreen.js index 66f5f675b..2e984d53e 100644 --- a/src/screens/authorProfile/screen/authorScreen.js +++ b/src/screens/authorProfile/screen/authorScreen.js @@ -104,7 +104,7 @@ class AuthorScreen extends Component { let user; await getAuthStatus().then((res) => { - isLoggedIn = res; + isLoggedIn = res.isLoggedIn; }); if (isLoggedIn) { diff --git a/src/screens/home/screen/homeScreen.js b/src/screens/home/screen/homeScreen.js index eed9be561..81b1da492 100644 --- a/src/screens/home/screen/homeScreen.js +++ b/src/screens/home/screen/homeScreen.js @@ -52,7 +52,7 @@ export default class HomeScreen extends PureComponent { let isLoggedIn; await getAuthStatus().then((res) => { - isLoggedIn = res; + isLoggedIn = res.isLoggedIn; }); if (isLoggedIn) { diff --git a/src/screens/post/container/postContainer.js b/src/screens/post/container/postContainer.js index 717b3070b..db8c6ffbf 100644 --- a/src/screens/post/container/postContainer.js +++ b/src/screens/post/container/postContainer.js @@ -60,7 +60,7 @@ class PostContainer extends Component { let isLoggedIn; await getAuthStatus().then((res) => { - isLoggedIn = res; + isLoggedIn = res.isLoggedIn; }); if (isLoggedIn) { diff --git a/src/screens/profile/_profile.js b/src/screens/profile/_profile.js index dd99c10b1..81ca1ed62 100644 --- a/src/screens/profile/_profile.js +++ b/src/screens/profile/_profile.js @@ -75,7 +75,7 @@ class ProfilePage extends React.Component { let about; await getAuthStatus().then((res) => { - isLoggedIn = res; + isLoggedIn = res.isLoggedIn; }); if (isLoggedIn) { diff --git a/src/screens/profile/container/profileContainer.js b/src/screens/profile/container/profileContainer.js index 945775f5e..0c46e6393 100644 --- a/src/screens/profile/container/profileContainer.js +++ b/src/screens/profile/container/profileContainer.js @@ -147,7 +147,7 @@ class ProfileContainer extends Component { let username; await getAuthStatus().then((res) => { - isLoggedIn = res; + isLoggedIn = res.isLoggedIn; }); if (selectedUser) { diff --git a/src/screens/splash/container/splashContainer.js b/src/screens/splash/container/splashContainer.js index 16637479f..48ca7e343 100644 --- a/src/screens/splash/container/splashContainer.js +++ b/src/screens/splash/container/splashContainer.js @@ -6,7 +6,11 @@ import { getAccount } from '../../../providers/steem/dsteem'; // Actions import { addOtherAccount, updateCurrentAccount } from '../../../redux/actions/accountAction'; -import { activeApplication, login, openPinCodeModal } from '../../../redux/actions/applicationActions'; +import { + activeApplication, + login, + openPinCodeModal, +} from '../../../redux/actions/applicationActions'; // Constants import { default as ROUTES } from '../../../constants/routeNames'; @@ -22,13 +26,15 @@ class SplashContainer extends Component { const { navigation, dispatch } = this.props; getAuthStatus().then((res) => { - if (res) { + if (res.isLoggedIn) { getUserData().then((response) => { if (response.length > 0) { response.forEach((accountData) => { - dispatch(addOtherAccount({ username: accountData.username })); + dispatch( + addOtherAccount({ username: accountData.username, avatar: accountData.avatar }), + ); }); - getAccount(response[response.length - 1].username).then((accountData) => { + getAccount(res.currentUsername).then((accountData) => { dispatch(updateCurrentAccount(...accountData)); dispatch(activeApplication()); dispatch(login()); diff --git a/src/screens/wallet/wallet.js b/src/screens/wallet/wallet.js index c1ceef3a4..f55e65d80 100644 --- a/src/screens/wallet/wallet.js +++ b/src/screens/wallet/wallet.js @@ -42,7 +42,7 @@ class WalletPage extends Component { let globalProperties; await getAuthStatus().then((res) => { - isLoggedIn = res; + isLoggedIn = res.isLoggedIn; }); if (isLoggedIn) { diff --git a/src/utils/realm.js b/src/utils/realm.js index e5daaeeaa..2e93bc6e5 100644 --- a/src/utils/realm.js +++ b/src/utils/realm.js @@ -2,7 +2,7 @@ import { getUserData, getAuthStatus } from '../realm/realm'; export const getUserIsLoggedIn = () => { getAuthStatus() - .then(res => res) + .then(res => res.isLoggedIn) .catch(() => null); };