Db fixed for multiple account feature

This commit is contained in:
mistikk 2018-11-01 19:03:01 +03:00
parent 49906d813d
commit 2b05630ee7
12 changed files with 42 additions and 22 deletions

View File

@ -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',

View File

@ -42,7 +42,7 @@ const noAuthMenuItems = [
{
name: 'Add Account',
route: ROUTES.SCREENS.LOGIN,
icon: 'add-circle-outline',
icon: 'plus-square-o',
},
{
name: 'Settings',

View File

@ -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),

View File

@ -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);
}

View File

@ -104,7 +104,7 @@ class AuthorScreen extends Component {
let user;
await getAuthStatus().then((res) => {
isLoggedIn = res;
isLoggedIn = res.isLoggedIn;
});
if (isLoggedIn) {

View File

@ -52,7 +52,7 @@ export default class HomeScreen extends PureComponent {
let isLoggedIn;
await getAuthStatus().then((res) => {
isLoggedIn = res;
isLoggedIn = res.isLoggedIn;
});
if (isLoggedIn) {

View File

@ -60,7 +60,7 @@ class PostContainer extends Component {
let isLoggedIn;
await getAuthStatus().then((res) => {
isLoggedIn = res;
isLoggedIn = res.isLoggedIn;
});
if (isLoggedIn) {

View File

@ -75,7 +75,7 @@ class ProfilePage extends React.Component {
let about;
await getAuthStatus().then((res) => {
isLoggedIn = res;
isLoggedIn = res.isLoggedIn;
});
if (isLoggedIn) {

View File

@ -147,7 +147,7 @@ class ProfileContainer extends Component {
let username;
await getAuthStatus().then((res) => {
isLoggedIn = res;
isLoggedIn = res.isLoggedIn;
});
if (selectedUser) {

View File

@ -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());

View File

@ -42,7 +42,7 @@ class WalletPage extends Component {
let globalProperties;
await getAuthStatus().then((res) => {
isLoggedIn = res;
isLoggedIn = res.isLoggedIn;
});
if (isLoggedIn) {

View File

@ -2,7 +2,7 @@ import { getUserData, getAuthStatus } from '../realm/realm';
export const getUserIsLoggedIn = () => {
getAuthStatus()
.then(res => res)
.then(res => res.isLoggedIn)
.catch(() => null);
};