Untitled
unknown
plain_text
3 years ago
34 kB
7
Indexable
// Customizable Area Start
//@ts-nocheck
//@ts-ignore
import { IBlock } from '../../../framework/src/IBlock';
import { Message } from '../../../framework/src/Message';
import { BlockComponent } from '../../../framework/src/BlockComponent';
import MessageEnum, {
getName,
} from '../../../framework/src/Messages/MessageEnum';
import { runEngine } from '../../../framework/src/RunEngine';
import StorageProvider from '../../../framework/src/StorageProvider';
// Customizable Area Start
import { imgPasswordInVisible, imgPasswordVisible } from './assets';
import {
auth as SpotifyAuth,
remote as SpotifyRemote,
ApiScope,
} from 'react-native-spotify-remote';
import messaging from '@react-native-firebase/messaging'
import NotifService from './NotifService'
import appleAuth, {
appleAuthAndroid,
} from '@invertase/react-native-apple-authentication';
import { validationAnim } from '../../../components/src/Helper';
import { CommonContext } from '../../../components/src/CommonContextProvider';
import { BackHandler, Keyboard, Linking, NativeModules, Platform, ToastAndroid } from 'react-native'
import { stringify } from 'querystring'
import { Alert } from 'react-native'
import storage from 'framework/src/StorageProvider.web'
import { platform } from 'os'
import OneSignal from 'react-native-onesignal'
export const configJSON = require('./config')
export interface Props {
navigation: any
id: string
// Customizable Area Start
// Customizable Area End
}
interface S {
// Customizable Area Start
DeviceToken: any,
AndroidDeiceToken: any,
password: string
email: string
loading: boolean
isInvalidEmail: boolean
isInvalidPass: boolean
isToggle: boolean
isPasswordCheck: boolean
isError: boolean
errorMsg: string
enablePasswordField: boolean
checkedRememberMe: boolean
indeterminate: boolean
placeHolderEmail: string
placeHolderPassword: string
imgPasswordVisible: any
imgPasswordInVisible: any
progress: any
labelHeader: string
btnTxtLogin: string
labelRememberMe: string
btnTxtSocialLogin: string
labelOr: string
emailError: any
passwordError: any
showPassword: boolean
rememberMe: boolean
userCreds: any
spotifyEmail: any
spotifyExternalUrl: any
spotifyUserId: any
spotifyUserType: any
spotifyAccessToken: any
spotifyRefreshToken: any
loader: boolean
playerid: any
Appletoken: any
// Customizable Area End
}
interface SS {
// Customizable Area Start
id: any
// Customizable Area End
}
let neha = {}
export default class EmailAccountLoginController extends BlockComponent<
Props,
S,
SS
> {
notificationPostApiCallId: any
applemusicsignupApiCallId: any
loginAccountApiCallId: any
spotifyLoginApiCallId: any
_unsubscribe: any
animation: any
spotifyConfig: any
getjwtToken: any
notif: any
validationApiCallId: string = "";
static contextType = CommonContext;
constructor(props: Props,) {
super(props)
runEngine.attachBuildingBlock(this as IBlock, [
getName(MessageEnum.RestAPIResponceMessage),
])
this.receive = this.receive.bind(this)
this.state = {
Appletoken: '',
DeviceToken: '',
AndroidDeiceToken: '',
playerid: '',
email: '',
password: '',
progress: 0,
loading: false,
isInvalidEmail: false,
isInvalidPass: false,
isToggle: false,
isPasswordCheck: false,
isError: false,
errorMsg: '',
enablePasswordField: true,
checkedRememberMe: false,
indeterminate: false,
placeHolderEmail: configJSON.placeHolderEmail,
placeHolderPassword: configJSON.placeHolderPassword,
imgPasswordVisible: configJSON.imgPasswordVisible,
imgPasswordInVisible: imgPasswordInVisible,
labelHeader: configJSON.labelHeader,
btnTxtLogin: configJSON.btnTxtLogin,
labelRememberMe: configJSON.labelRememberMe,
btnTxtSocialLogin: configJSON.btnTxtSocialLogin,
labelOr: configJSON.labelOr,
userCreds: '',
emailError: false,
passwordError: false,
showPassword: true,
rememberMe: false,
spotifyEmail: '',
spotifyExternalUrl: '',
spotifyUserId: '',
spotifyUserType: '',
spotifyAccessToken: '',
spotifyRefreshToken: '',
loader: false,
}
this.spotifyConfig = {
// clientID: "3470398eb99c475389fd4f93148674f2", cleint id of carl
// clientID: 'd6844c47aecb4d26a67a27827937126d',
// {....sagar client id}
clientID: '3470398eb99c475389fd4f93148674f2',
redirectURL: 'com.VibeSocialMusic://EmailAccountLoginBlock',
//playURI: "spotify:artist:1fbo6ce8Pg6ZPWlpE3OkfQ",
// tokenRefreshURL: "http://localhost:3000/spotify_refresh",
// tokenSwapURL: "http://localhost:3000/spotify_swap",
scopes: [
ApiScope.PlaylistReadPrivateScope,
ApiScope.PlaylistReadCollaborativeScope,
ApiScope.PlaylistModifyPublicScope,
ApiScope.PlaylistModifyPrivateScope,
ApiScope.UserFollowReadScope,
ApiScope.UserFollowModifyScope,
ApiScope.UserLibraryReadScope,
ApiScope.UserLibraryModifyScope,
// ApiScope.UserReadBirthDateScope,
ApiScope.UserReadEmailScope,
ApiScope.UserReadPrivateScope,
ApiScope.UserTopReadScope,
ApiScope.UGCImageUploadScope,
ApiScope.StreamingScope,
ApiScope.AppRemoteControlScope,
ApiScope.UserReadPlaybackStateScope,
ApiScope.UserReadPlaybackPosition,
ApiScope.UserModifyPlaybackStateScope,
],
}
}
// animate = () => {
// let progress = 0
// this.setState({ progress })
// setTimeout(() => {
// this.setState({ indeterminate: false })
// setInterval(() => {
// progress += Math.random() / 5
// if (progress > 1) // istanbul ignore next
// {
// progress = 1
// }
// this.setState({ progress })
// }, 500)
// }, 10)
// }
setUserToken = async (userData: any) => {
// console.log('user detials on email login page>>', userData)
const _userDetails = JSON.stringify(userData.data.attributes)
this.notificationcallapi(userData.meta.token)
await StorageProvider.set('USER_TOKEN', userData.meta.token)
await StorageProvider.set('USER_DETAILS', _userDetails)
await StorageProvider.set('USER_ID', userData.data.id)
console.log( "zxxxxxxxcdddddd", userData.meta.token)
const ud = await StorageProvider.get('USER_ID')
await StorageProvider.set('REMEMBER_CHECK', 'success')
// istanbul ignore next
if (this.state.isToggle === true)
{
// console.log('token when remember me on >>>', this.state.isToggle)
}
}
// did
async componentDidMount(): Promise<void> {
//this.jwtTokenCreation()
// this.createPlayerID()
this.RememberMe()
}
async receive(from: string, message: Message) {
if (
getName(MessageEnum.RestAPIResponceMessage) === message.id &&
this.applemusicsignupApiCallId !== null &&
this.applemusicsignupApiCallId ===
message.getData(getName(MessageEnum.RestAPIResponceDataMessage))
) // istanbul ignore next
{
this.applemusicsignupApiCallId = null
var responseJson = message.getData(
getName(MessageEnum.RestAPIResponceSuccessMessage),
)
if (responseJson && !responseJson.errors) // istanbul ignore next
{
this.notificationcallapi(responseJson.meta.token)
await StorageProvider.set('PLATFORM', 'apple')
// this.context.platformData('apple')
await StorageProvider.set('USER_TOKEN',responseJson.meta.token)
console.log( "zxxxxxxxcdddddd",responseJson.meta.token)
this.setState({ loader: false })
if (responseJson.data?.attributes?.genre_selected) // istanbul ignore next
{
this.props.navigation.navigate('FeedBlock')
} else // istanbul ignore next
{
this.props.navigation.navigate('Customform')
}
} else if (responseJson.errors) // istanbul ignore next
{
console.log('Post Api Error')
console.log(responseJson, 'Post Api Error')
// this.setState({ loader: false })
} else // istanbul ignore next
{
console.log(responseJson, "error")
// this.setState({ loader: false })
// this.parseApiErrorResponse(responseJson.data)
}
}
if (
getName(MessageEnum.RestAPIResponceMessage) === message.id &&
this.notificationPostApiCallId !== null &&
this.notificationPostApiCallId ===
message.getData(getName(MessageEnum.RestAPIResponceDataMessage))
) // istanbul ignore next
{
this.notificationPostApiCallId = null
var responseJson = message.getData(
getName(MessageEnum.RestAPIResponceSuccessMessage),
)
if (responseJson && !responseJson.errors) // istanbul ignore next
{
console.log(responseJson, "responseofthenoti")
} else if (responseJson.errors) // istanbul ignore next
{
// this.setState({ loader: false })
} else // istanbul ignore next
{
console.log(responseJson, "error")
// this.parseApiErrorResponse(responseJson.data)
}
}
if (
getName(MessageEnum.RestAPIResponceMessage) === message.id &&
this.getjwtToken !== null &&
this.getjwtToken ===
message.getData(getName(MessageEnum.RestAPIResponceDataMessage))
) // istanbul ignore next
{
var responseJson = message.getData(
getName(MessageEnum.RestAPIResponceSuccessMessage),
)
console.log('connect account api response>>>', responseJson.data)
await StorageProvider.set('APPLE_JWT_TOKEN', responseJson.data)
}
if (
getName(MessageEnum.RestAPIResponceMessage) === message.id &&
this.loginAccountApiCallId !== null &&
this.loginAccountApiCallId ===
message.getData(getName(MessageEnum.RestAPIResponceDataMessage))
) // istanbul ignore next
{
this.setState({ loader: false })
var responseJson = message.getData(
getName(MessageEnum.RestAPIResponceSuccessMessage),
)
if (
responseJson &&
!responseJson.errors &&
responseJson.data &&
responseJson.meta.token
) // istanbul ignore next
{
this.setState({ loader: false })
await StorageProvider.set('PLATFORM', 'spotify')
// this.context.platformData('spotify')
await StorageProvider.set('IDOFTHECURRENTUSER', responseJson.data.id)
await StorageProvider.set('TASTEMAKER_ID', JSON.stringify(responseJson.data.attributes.tastemaker_id))
this.loginAccountSuccessCallBack(responseJson)
} else
{
//Check Error Response
this.loginAccountFailureCallBack(responseJson)
// this.parseApiErrorResponse(responseJson);
}
// this.parseApiCatchErrorResponse(errorResponse);
} else if
(
getName(MessageEnum.RestAPIResponceMessage) === message.id &&
this.spotifyLoginApiCallId !== null &&
this.spotifyLoginApiCallId ===
message.getData(getName(MessageEnum.RestAPIResponceDataMessage))
) // istanbul ignore next
{
this.spotifyLoginApiCallId = null
this.setState({ loader: false })
var responseJson = message.getData(
getName(MessageEnum.RestAPIResponceSuccessMessage),
)
var errorResponse = message.getData(
getName(MessageEnum.RestAPIResponceErrorMessage),
)
console.log('using spotify api', responseJson)
if (
responseJson &&
!responseJson.errors &&
!responseJson.data.errors &&
responseJson.meta.token
) // istanbul ignore next
{
await StorageProvider.set('IDOFTHECURRENTUSER',responseJson.data.id)
await StorageProvider.set('TASTEMAKER_ID',JSON.stringify(responseJson.data.attributes.tastemaker_id))
await StorageProvider.set('PLATFORM','spotify')
// this.context.platformData('spotify')
this.spotifyLoginSuccessCallBack(responseJson)
} else if (responseJson.errors) // istanbul ignore next
{
this.spotifyLoginFailureCallBack(responseJson)
this.parseApiErrorResponse(responseJson)
} else // istanbul ignore next
{
this.spotifyLoginFailureCallBack(responseJson)
this.parseApiErrorResponse(responseJson.data)
}
}
}
RememberMe=async()=>{
let email = await StorageProvider.get('LOGIN_USERNAME')
let password = await StorageProvider.get('LOGIN_PASSWORD')
console.log("ffrwroifnojnejrnvef",this.context.rememberme) // istanbul ignore next
if(this.context.rememberme === true){
this.setState({email : email})
this.setState({password: password})
this.setState({isToggle : true})
}else if(this.context.rememberme === false){
this.setState({email : ''})
this.setState({password: ''})
this.setState({isToggle : false})
}
}
notificationcallapi = async (userData: any) => {
const _token = await StorageProvider?.get('USER_TOKEN')
const _devicetoken = await StorageProvider?.get('Player_ID')
this.setState({ loader: true })
const header = {
'Content-Type': 'multipart/form-data',
token: userData,
}
var formdata = new FormData()
formdata.append('account[device]', Platform.OS)
formdata.append('account[device_token]', _devicetoken)
const requestMessage = new Message(
getName(MessageEnum.RestAPIRequestMessage),
)
this.notificationPostApiCallId = requestMessage.messageId
requestMessage.addData(
getName(MessageEnum.RestAPIResponceEndPointMessage),
'https://vibesocialmusic-82830-ruby.b82830.dev.us-east-1.aws.svc.builder.cafe/create_device_token',
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestHeaderMessage),
JSON.stringify(header),
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestBodyMessage),
formdata,
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestMethodMessage),
configJSON.loginAPiPostMethod,
)
runEngine.sendMessage(requestMessage.id, requestMessage)
return true
}
spotifyLoginSuccessCallBack = async (responseJson: any) => {
// console.log('@@@ spotify Success Response============', responseJson)
await this.setUserToken(responseJson)
Keyboard.dismiss()
this.setState({ loading: false })
// istanbul ignore next
if (
!responseJson?.data?.attributes?.account_connected &&
!responseJson?.data?.attributes?.genre_selected
)
{
// console.log(
// 'from login using spotify goning to streaming if account not activated and genre not selected>>',
// )
this.props.navigation.navigate('Streaming', {
genre: responseJson?.data?.attributes?.genre_selected,
})
} else if (
responseJson?.data?.attributes?.account_connected &&
!responseJson?.data?.attributes?.genre_selected
) // istanbul ignore next
{
// console.log(
// 'from login using spotify goning to customform if account connected>>',
// )
this.props.navigation.navigate('Customform')
} else if (
!responseJson?.data?.attributes?.account_connected &&
responseJson?.data?.attributes?.genre_selected
) // istanbul ignore next
{
// console.log(
// 'from login using spotify goning to streaming if genre selected>>',
// )
this.props.navigation.navigate('Streaming', {
genre: responseJson?.data?.attributes?.genre_selected,
})
} else // istanbul ignore next
{
// console.log('from login using spotify goning to FeedBlock>>>')
this.props.navigation.navigate('FeedBlock')
}
}
spotifyLoginFailureCallBack = (errorResponse: any) => {
this.setState({ loading: false })
// console.log('@@@ spotify Error Response =========', errorResponse)
}
spotifyLoginApi = async () => {
this.setState({ loader: true })
var formdata = new FormData()
formdata.append('type', 'social_account')
formdata.append('account[email]', this.state.spotifyEmail)
formdata.append(
'account[spotify_external_urls]',
`{ spotify:${this.state.spotifyExternalUrl}}`,
)
formdata.append('account[user_name]', this.state.spotifyEmail.split('@')[0])
formdata.append('account[spotify_user_id]', this.state.spotifyUserId)
formdata.append('account[spotify_user_type]', this.state.spotifyUserType)
formdata.append(
'account[spotify_access_token]',
this.state.spotifyAccessToken,
)
formdata.append(
'account[spotify_refresh_token]',
this.state.spotifyAccessToken,
)
// console.log('full data in spotify login api >>>>', formdata)
const header = {
'Content-Type': 'multipart/form-data',
}
const requestMessage = new Message(
getName(MessageEnum.RestAPIRequestMessage),
)
this.spotifyLoginApiCallId = requestMessage.messageId
requestMessage.addData(
getName(MessageEnum.RestAPIResponceEndPointMessage),
configJSON.createApiEndPoint,
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestHeaderMessage),
JSON.stringify(header),
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestBodyMessage),
formdata,
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestMethodMessage),
configJSON.loginAPiPostMethod,
)
// console.log(
// '@@@ Request ===========',
// requestMessage,
// this.spotifyLoginApiCallId,
// )
runEngine.sendMessage(requestMessage.id, requestMessage)
return true
}
loginAccountSuccessCallBack = async (responseJson: any) => {
this.setState(
{
loading: false,
isInvalidPass: false,
isInvalidEmail: false,
},
// () => alert('Login Successfully'),
)
await this.setUserToken(responseJson)
// this.onSpotifyLogin()
// console.log('@@@ Login Success Response============', responseJson)
Keyboard.dismiss()
this.setState({ loading: false })
// istanbul ignore next
if (
!responseJson?.data?.attributes?.account_connected &&
!responseJson?.data?.attributes?.genre_selected
)
{
// console.log(
// 'from login goning using email and pass to streaming if account not activated and genre not selected>>',
// )
this.props.navigation.navigate('Streaming', {
genre: responseJson?.data?.attributes?.genre_selected,
})
} else if (
responseJson?.data?.attributes?.account_connected &&
!responseJson?.data?.attributes?.genre_selected
) // istanbul ignore next
{
// console.log('from login using email and pass goning to customform if account connected>>')
this.props.navigation.navigate('Customform')
} else if (
!responseJson?.data?.attributes?.account_connected &&
responseJson?.data?.attributes?.genre_selected
) // istanbul ignore next
{
// console.log('from login using email and pass goning to streaming if genre selected>>')
this.props.navigation.navigate('Streaming', {
genre: responseJson?.data?.attributes?.genre_selected,
})
} else // istanbul ignore next
{
// console.log('from login using email and pass goning to FeedBlock>>>')
this.props.navigation.navigate('FeedBlock')
}
}
loginAccountFailureCallBack = (errorResponse: any) => {
this.setState({
loader: false,
email: '',
password: '',
isInvalidPass: true,
isInvalidEmail: true,
isError: true,
progress: 0,
})
// console.log('@@@ Login Error Response =========', errorResponse)
this.setState({ errorMsg: errorResponse.errors[0].failed_login })
// this.showAlert('Failed_login:', "Login Failed");
}
validationCheck = async () => {
// console.log('check validation')
//let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
//let reg = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
let reg = /^[a-z]+[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
let regPass = /^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{4,}$/
if (!reg.test(this.state.email)) // istanbul ignore next
{
this.setState({ isInvalidEmail: true })
} else // istanbul ignore next
{
this.setState({ isInvalidEmail: false })
}
if (regPass.test(this.state.password)) // istanbul ignore next
{
this.setState({ isInvalidPass: false })
} else // istanbul ignore next
{
this.setState({ isInvalidPass: true })
}
setTimeout(() => {
let validationLength = validationAnim([
!this.state.isInvalidEmail,
!this.state.isInvalidPass,
]) // istanbul ignore next
// console.log('validationLength', validationLength)
switch (validationLength) {
case 0:
this.setState({ progress: 0 })
break
case 1:
this.setState({ progress: 0.5 })
break
case 2:
this.setState({ progress: 1 })
break
}
}, 400)
}
doEmailLogin = async () => {
this.setState({ loader: true })
const header = {
'Content-Type': configJSON.loginApiContentType,
}
const attrs = {
email: this.state.email,
password: this.state.password,
}
const data = {
type: 'email_account',
attributes: attrs,
}
//console.log('request of email login >>>>', data)
const httpBody = {
data: data,
}
const requestMessage = new Message(
getName(MessageEnum.RestAPIRequestMessage),
)
this.loginAccountApiCallId = requestMessage.messageId
requestMessage.addData(
getName(MessageEnum.RestAPIResponceEndPointMessage),
configJSON.loginAPiEndPoint,
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestHeaderMessage),
JSON.stringify(header),
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestBodyMessage),
JSON.stringify(httpBody),
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestMethodMessage),
configJSON.loginAPiPostMethod,
)
runEngine.sendMessage(requestMessage.id, requestMessage)
return true
}
handleForgotPassword = () => {
Keyboard.dismiss()
this.props.navigation.navigate('ForgotPasswordOTP')
}
handlePasswordCheck = () => {
this.setState({ isPasswordCheck: !this.state.isPasswordCheck,})
}
onSpotifyLogin = async () => {
try {
// await SpotifyAuth.endSession()
this.setState({ loader: true })
const session = await SpotifyAuth.authorize(this.spotifyConfig)
await SpotifyRemote.connect(session.accessToken);
// await SpotifyRemote.seek(58000);
console.log('getting spotify data>>>>>', session)
let refresh = await StorageProvider.set("REFRESH_TOKEN", session.refreshToken)
// console.log(refresh)
// istanbul ignore next
if (!session)
{
this.setState({ loader: false })
}
this.setState({
spotifyAccessToken: session.accessToken,
spotifyRefreshToken: session.refreshToken,
})
this.getUserData(session)
} catch (error) {
this.setState({ loader: false })
// console.log('user cancle login>>', error)
}
}
getUserData = async (accessToken: any) => {
// console.log('spotify token>>>>', accessToken.accessToken)
// let refresh = await StorageProvider.set("REFRES", accessToken.refreshToken)
try {
let response = await fetch(`https://api.spotify.com/v1/me`, {
headers: {
Authorization: 'Bearer ' + accessToken.accessToken,
},
})
this.setState({ loader: false })
let json = await response.json()
// console.log('spotify user login api response >>>>>', json)
await StorageProvider.set('USER_TOKEN_SPOTIFY', accessToken.accessToken)
this.setState(
{
spotifyEmail: json.email,
spotifyUserId: json.id,
spotifyUserType: json.type,
spotifyExternalUrl: json.external_urls.spotify,
},
() => this.spotifyLoginApi(),
)
} catch (error) {
// console.log('@@@ User Data Success fail for spotiry ============', error)
Alert.alert(
'Alert',
'Your Spotify Email is not linked with Spotify Console.',
[
{
text: 'OK',
onPress: () => null,
},
],
)
this.setState({ loader: false })
}
}
moveToNextScreen = (screenName: string) => {
//BackHandler.removeEventListener("hardwareBackPress", this.handleBackButton),
Keyboard.dismiss()
this.props.navigation.navigate(screenName)
}
checkNativeIOS = async () => {
try {
var jwt = await StorageProvider.get('APPLE_JWT_TOKEN') //developer token
var result = await NativeModules.AppleMusicAuthentication.authAppleMusic(jwt);
await StorageProvider.set('APPLE_MUSIC_TOKEN', result)
console.log('Succeed to get Apple Music user token. User token >> ', result);
} catch (e:any) {
console.log('Failed to get Apple Music user token. Error >> ', e.code, e.massage)
}
}
checkNativeAndroid = async () =>{
try {
const userToken = await NativeModules.AppleMusicAuthenticationModule.authAppleMusic("eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlQzVERXOTg1UEYifQ.eyJpc3MiOiIyNkEyQlVVQ1E5IiwiaWF0IjoxNjcyMDUzNTU0LjI3NzQ3MywiZXhwIjoxNjgwNjkzNTU0LjI3NzQ3M30.KcZPYGxWkf0bEEG4JVG1ZyafXqDdwyur9qy9QP5Ayx4qwIjT8dDvb9jWbVBYayTJzYVXJdsF3xNY2scdwcvRVg")
// console.log("Getting a new UserToken", { userToken });
} catch (e) {
console.log("Getting a new UserToken", { e });
}
}
jwtTokenCreation = async () => {
const header = {
'Content-Type': 'application/json',
}
const requestMessage = new Message(
getName(MessageEnum.RestAPIRequestMessage),
)
this.getjwtToken = requestMessage.messageId
requestMessage.addData(
getName(MessageEnum.RestAPIResponceEndPointMessage),
'https://vibesocialmusic-82830-ruby.b82830.dev.us-east-1.aws.svc.builder.cafe/apple_jwt'
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestHeaderMessage),
JSON.stringify(header)
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestMethodMessage),
'POST',
)
runEngine.sendMessage(requestMessage.id, requestMessage)
return true
}
onPressLoginWithApple1 = async () => {
console.log("button");
try {
const appleAuthRequestResponse = await appleAuth.performRequest({
requestedOperation: appleAuth.Operation.LOGIN,
requestedScopes: [appleAuth.Scope.EMAIL, appleAuth.Scope.FULL_NAME],
});
// get current authentication state for user
// /!\ This method must be tested on a real device. On the iOS simulator it always throws an error.
const credentialState = await appleAuth.getCredentialStateForUser(appleAuthRequestResponse.user);
console.log("Main Token Apple Token ", appleAuthRequestResponse);
this.setState(
{
Appletoken: appleAuthRequestResponse.identityToken
},
() => this.appleMusicAPI(),
)
// use credentialState response to ensure the user is authenticated
// istanbul ignore next
if (credentialState === appleAuth.State.AUTHORIZED)
{
this.jwtTokenCreation()
this.checkNativeIOS()
}
Keyboard.dismiss()
} catch (error) {
Alert.alert(
'Alert',
'Your Apple Music is not connected.',
[
{
text: 'OK',
onPress: () => null,
},
],
)
this.setState({ loader: false })
// console.log('user cancle login>>', error)
}
}
onPressLoginWithAndroid = async () => {
try {
appleAuthAndroid.configure({
clientId: 'com.engineer.vibesocialmusic',
redirectUri: 'https://vibesocialmusic-82830-ruby.b82830.dev.us-east-1.aws.svc.builder.cafe/callback',
scope: appleAuthAndroid.Scope.ALL,
responseType: appleAuthAndroid.ResponseType.ALL,
})
const response = await appleAuthAndroid.signIn()
// istanbul ignore next
if (response)
{
const code = response.code // Present if selected ResponseType.ALL / ResponseType.CODE
const id_token = response.id_token // Present if selected ResponseType.ALL / ResponseType.ID_TOKEN
const user = response.user // Present when user first logs in using appleId
const state = response.state // A copy of the state value that was passed to the initial request.
console.log("@@@ Responce", response);
console.log('@@@ Got auth code', code)
console.log('@@@ Got id_token', id_token)
console.log('@@@ Got user', user)
console.log('@@@ Got state', state)
this.setState(
{
Appletoken: id_token
},
() => this.appleMusicAPI(),
)
// if () {
// this.jwtTokenCreation()
// this.checkNativeIOS()
// }
Keyboard.dismiss()
}
} catch (error:any) {
if (error && error.message) // istanbul ignore next
{
console.log(error)
switch (error.message) {
case appleAuthAndroid.Error.NOT_CONFIGURED:
// console.log('appleAuthAndroid not configured yet.')
break
case appleAuthAndroid.Error.SIGNIN_FAILED:
// console.log('Apple signin failed.')
break
case appleAuthAndroid.Error.SIGNIN_CANCELLED:
// console.log('User cancelled Apple signin.')
break
default:
break
}
}
}
}
appleMusicAPI = async () => {
let formData = new FormData()
formData.append('account[apple_token]', this.state.Appletoken)
const header = {
'Content-Type': 'multipart/form-data',
}
const requestMessage = new Message(
getName(MessageEnum.RestAPIRequestMessage),
)
this.applemusicsignupApiCallId = requestMessage.messageId
requestMessage.addData(
getName(MessageEnum.RestAPIResponceEndPointMessage),
"https://vibesocialmusic-82830-ruby.b82830.dev.us-east-1.aws.svc.builder.cafe/apple_account_create",
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestHeaderMessage),
JSON.stringify(header),
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestBodyMessage),
formData,
)
requestMessage.addData(
getName(MessageEnum.RestAPIRequestMethodMessage),
'POST',
)
// console.log(
// '@@@ Request ===========',
// requestMessage,
// this.spotifyLoginApiCallId,
// )
runEngine.sendMessage(requestMessage.id, requestMessage)
return true
}
finalAppleMusicLogin = async () => {
//1) apple login (will pass identy token then we will get vibe token)
//2) jwt creation
//3) Apple music user token
this.onPressLoginWithApple1()
//this.checkNativeIOS()
}
handleRememberMe = async (e) => {
this.setState({ isToggle: !this.state.isToggle })
if(e === false){
this.setState({email: ''})
this.setState({password: ''})
this.context.rememberMe(e)
}
await StorageProvider.set('LOGIN_USERNAME', this.state.email)
await StorageProvider.set('LOGIN_PASSWORD', this.state.password)
this.context.rememberMe(e)
console.log("Remember Me---->",this.context.rememberme)
}
// handleRememberMe = () => {
// this.setState({ rememberMe: !this.state.rememberMe })
// }
// handleShowPassword = () => {
// this.setState({ showPassword: !this.state.showPassword })
// }
// handlePassword = (text: any) => {
// // console.log(' Value in Password>>', text)
// // let reg = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$/
// let reg = /^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{6,}$/
// if (reg.test(text) === false) // istanbul ignore next
// {
// // console.log('password is Not Correct')
// this.setState({ password: text, passwordError: true })
// return false
// } else // istanbul ignore next
// {
// this.setState({ password: text, passwordError: false })
// // console.log('password is Correct')
// }
// }
// handleEmail = (text: any) => {
// // console.log('value in email>>', text)
// let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w\w+)+$/
// if (reg.test(text) === false) {
// // console.log('Email is Not Correct')
// this.setState({ email: text, emailError: true })
// return false
// } else {
// this.setState({ email: text, emailError: false })
// // console.log('Email is Correct')
// }
// }
// handleSignUp = () => {
// Keyboard.dismiss()
// this.props.navigation.navigate('DynamicContent')
// }
// handleLogin = () => {
// if (
// this.state.email === null ||
// this.state.email.length === 0 ||
// this.state.emailError
// ) // istanbul ignore next
// {
// alert('Please Enter Email')
// return false
// }
// if (
// this.state.password === null ||
// this.state.password.length === 0 ||
// this.state.passwordError
// ) // istanbul ignore next
// {
// alert('Please Enter Password')
// return false
// }
// alert('Api Integration is Under Progress')
// }
}
// Customizable Area End
// Customizable Area EndEditor is loading...