Comments (8)
Updating this issue to be a bug and we are actively investigating this further. It looks like the root problem is with the UpdateEndpoint util in core where we are using a fallback value that changes what is set when calling an API like identifyUser()
.
We'll update this issue as we make progress.
from amplify-js.
Amplify JS v6.3.1 has just been released. It should contain the following fixes:
#13174
#13353
We believe these fixes should resolve your issue of the endpoint being overwritten by the device registration. Could you please help us by verifying if this is indeed the case by updating to the latest Amplify version? Thank you
from amplify-js.
Hey there, @nigelAt8Seats and thank you for opening this issue. To better understand what's happening here, do you have some frontend code you can share that details how/where you're calling identitfyUser()
? And is this happening with every user within your app or just intermittently after you tried to remove Analytics?
from amplify-js.
Hiya,
I believe our code is the equivalent to that in the react-native documentation.
const CognitoUserProvider = ({ children }: { children: ReactNode }) => {
const [cognitoUser, setCognitoUser] = useState<AuthUser | undefined>();
const { showNoConnection } = useShowNoConnection(cognitoUser);
const { deviceToken } = useContext(DeviceTokenContext);
const checkForLoggedInUser = useCallback(async () => {
const user = await getCurrentUser().catch(() => null);
logger.debug('>>>>>>>>> user::', user);
if (user) {
setCognitoUser(user);
logger.debug('bootstrapping user session successful.');
} else {
setCognitoUser(undefined);
}
}, [setCognitoUser]);
useEffect(() => {
if (cognitoUser) {
const identifyUserInput: IdentifyUserInput = {
// E.g. user-id
options: {
address: deviceToken,
optOut: 'NONE', // Either ALL or NONE
},
userId: cognitoUser.userId,
userProfile: {},
};
identifyUser(identifyUserInput);
postHogTrack('New Device Token Received', {
user: cognitoUser?.userId ?? '',
token: deviceToken ?? '',
});
logger.debug('identifying user successful');
}
}, [cognitoUser, deviceToken]);
useEffect(() => {
checkForLoggedInUser()
.catch((err: any) => {
logger.warn('warn::checkForLoggedInUser::', err);
setCognitoUser(undefined);
})
.finally(() => {
BootSplash.hide({ fade: true });
});
}, [checkForLoggedInUser]);
return (
<CognitoUserContext.Provider
value={{
checkForLoggedInUser,
cognitoUser,
setCognitoUser,
}}>
{showNoConnection ? <NoConnection /> : children}
</CognitoUserContext.Provider>
);
};
export default CognitoUserProvider;
We have a cognito user provider.
export const DeviceTokenContext = createContext<{
deviceToken?: string;
}>({
deviceToken: undefined,
});
export const DeviceTokenProvider = ({ children }: { children: ReactNode }) => {
const [deviceToken, setDeviceToken] = useState<string | undefined>();
useEffect(() => {
const tokenListener = onTokenReceived(async token => {
logger.debug('deviceTokenProvider:: token received:', token);
setDeviceToken(token);
});
return () => {
tokenListener.remove();
};
}, [setDeviceToken]);
return (
<DeviceTokenContext.Provider value={{ deviceToken }}>
{children}
</DeviceTokenContext.Provider>
);
};
#also
const initSignIn = async () => {
const user = await getCurrentUser();
logger.debug('user', user);
const localUserId = await AsyncStorage.getItem('8seats::userId');
if (localUserId !== user.userId) {
await DataStore.clear();
await AsyncStorage.setItem('8seats::userId', user.userId);
}
const identifyUserInput: IdentifyUserInput = {
// E.g. user-id
options: {
optOut: 'NONE', // Either ALL or NONE
},
userId: user.userId,
userProfile: {},
};
await identifyUser(identifyUserInput);
return user;
};
The problem has existed for months... Turning off Analytics has made it less frequent; but still possible.
from amplify-js.
Disabling analytics
disable(); // analytics
Amplify.configure(amplifyconfig); # << I took all the analytics stuff out of the config too.
configureAutoTrack({
enable: false,
type: 'session', # << react native so autotracking is only for session
});
initializePushNotifications();
// also called when the process is Terminated
onNotificationReceivedInBackground(
NotificationsService.onNotificationReceivedInBackgroundOrTerminatedHandler,
);
from amplify-js.
@nigelAt8Seats, appreciate the sample code. Just to confirm, is this all areas where identifyUser()
is called?
from amplify-js.
We moved to using firebase cloud messaging instead of pinpoint to avoid the issue entirely.
from amplify-js.
@nigelAt8Seats, we appreciate the follow up comment and will close the issue as resolved at this point. Feel free to let us know if you're able to validate fixes and come back to Analytics/Pinpoint at any time!
from amplify-js.
Related Issues (20)
- amplify/auth resetPassword succeeds but customSmsSender trigger lambda never called HOT 3
- Federated Sign-in - App Sync list query Auth Error HOT 2
- Amplify not works well if I have configuring multiple user pools with condition
- Next, js, Amplify js.fetchAuthSession({forceRefresh: true}) does not work as expected and returns tokens as undefined. How to manage a refresh token in Amplify v6 in Next.js HOT 12
- Amplify CLI Gen 2 - Multiple SortKeys combined into one input with GraphQL Generation HOT 5
- AWS storage upload issue HOT 3
- Datastore.save() sending _version of previous query model instead of current model. HOT 2
- runWithAmplifyServerContext throwing error, ⨯ Error: Cannot access Cognito.length on the server. You cannot dot into a client module from a server component. You can only pass the imported name through. HOT 4
- 6.3.3 is stable ? HOT 1
- ResizeObserver loop when navigating in the Authenticator component HOT 1
- [v6] resetPassword not trigger UserMigration lambda HOT 2
- Add timeout on GET and POST api calls HOT 4
- No federated JWT token when using AppSync OIDC in Amplify Gen2 HOT 5
- Permission denied - allow.authenticated() HOT 6
- [v6] sendUserAttributeVerificationCode not send code to destination email HOT 5
- MD5 not calculating correctly when selecting file from broswer, failing with BadDigest Error HOT 5
- Auth.SignIn not allowing username only signin HOT 2
- `Hub.listen` not firing when inside `useEffect` HOT 14
- Hub should automatically fire `tokenRefresh` event through Hub HOT 1
- Google login in react native requires two login attempts to work only on production ANDROID HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from amplify-js.