Skip to content

Commit 09db9f0

Browse files
chore(android): Change from deprecated user.others to user.data (#2555)
1 parent befcc51 commit 09db9f0

File tree

5 files changed

+50
-35
lines changed

5 files changed

+50
-35
lines changed

android/src/main/java/io/sentry/react/RNSentryModule.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -297,45 +297,49 @@ private static PackageInfo getPackageInfo(Context ctx) {
297297
}
298298

299299
@ReactMethod
300-
public void setUser(final ReadableMap user, final ReadableMap otherUserKeys) {
300+
public void setUser(final ReadableMap userKeys, final ReadableMap userDataKeys) {
301301
Sentry.configureScope(scope -> {
302-
if (user == null && otherUserKeys == null) {
302+
if (userKeys == null && userDataKeys == null) {
303303
scope.setUser(null);
304304
} else {
305305
User userInstance = new User();
306306

307-
if (user != null) {
308-
if (user.hasKey("email")) {
309-
userInstance.setEmail(user.getString("email"));
307+
if (userKeys != null) {
308+
if (userKeys.hasKey("email")) {
309+
userInstance.setEmail(userKeys.getString("email"));
310310
}
311311

312-
if (user.hasKey("id")) {
313-
userInstance.setId(user.getString("id"));
312+
if (userKeys.hasKey("id")) {
313+
userInstance.setId(userKeys.getString("id"));
314314
}
315315

316-
if (user.hasKey("username")) {
317-
userInstance.setUsername(user.getString("username"));
316+
if (userKeys.hasKey("username")) {
317+
userInstance.setUsername(userKeys.getString("username"));
318318
}
319319

320-
if (user.hasKey("ip_address")) {
321-
userInstance.setIpAddress(user.getString("ip_address"));
320+
if (userKeys.hasKey("ip_address")) {
321+
userInstance.setIpAddress(userKeys.getString("ip_address"));
322+
}
323+
324+
if (userKeys.hasKey("segment")) {
325+
userInstance.setSegment(userKeys.getString("segment"));
322326
}
323327
}
324328

325-
if (otherUserKeys != null) {
326-
HashMap<String, String> otherUserKeysMap = new HashMap<>();
327-
ReadableMapKeySetIterator it = otherUserKeys.keySetIterator();
329+
if (userDataKeys != null) {
330+
HashMap<String, String> userDataMap = new HashMap<>();
331+
ReadableMapKeySetIterator it = userDataKeys.keySetIterator();
328332
while (it.hasNextKey()) {
329333
String key = it.nextKey();
330-
String value = otherUserKeys.getString(key);
334+
String value = userDataKeys.getString(key);
331335

332336
// other is ConcurrentHashMap and can't have null values
333337
if (value != null) {
334-
otherUserKeysMap.put(key, value);
338+
userDataMap.put(key, value);
335339
}
336340
}
337341

338-
userInstance.setOthers(otherUserKeysMap);
342+
userInstance.setData(userDataMap);
339343
}
340344

341345
scope.setUser(userInstance);

ios/RNSentry.m

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -296,24 +296,26 @@ - (void)setEventEnvironmentTag:(SentryEvent *)event
296296
resolve(@YES);
297297
}
298298

299-
RCT_EXPORT_METHOD(setUser:(NSDictionary *)user
300-
otherUserKeys:(NSDictionary *)otherUserKeys
299+
RCT_EXPORT_METHOD(setUser:(NSDictionary *)userKeys
300+
otherUserKeys:(NSDictionary *)userDataKeys
301301
)
302302
{
303303
[SentrySDK configureScope:^(SentryScope * _Nonnull scope) {
304-
if (nil == user && nil == otherUserKeys) {
304+
if (nil == userKeys && nil == userDataKeys) {
305305
[scope setUser:nil];
306306
} else {
307307
SentryUser* userInstance = [[SentryUser alloc] init];
308308

309-
if (nil != user) {
310-
[userInstance setUserId:user[@"id"]];
311-
[userInstance setEmail:user[@"email"]];
312-
[userInstance setUsername:user[@"username"]];
309+
if (nil != userKeys) {
310+
[userInstance setUserId:userKeys[@"id"]];
311+
[userInstance setIpAddress:userKeys[@"ip_address"]];
312+
[userInstance setEmail:userKeys[@"email"]];
313+
[userInstance setUsername:userKeys[@"username"]];
314+
[userInstance setSegment:userKeys[@"segment"]];
313315
}
314316

315-
if (nil != otherUserKeys) {
316-
[userInstance setData:otherUserKeys];
317+
if (nil != userDataKeys) {
318+
[userInstance setData:userDataKeys];
317319
}
318320

319321
[scope setUser:userInstance];

sample/src/screens/HomeScreen.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ const HomeScreen = (props: Props) => {
3939
id: 'test-id-0',
4040
4141
username: 'USER-TEST',
42+
ip_address: '1.1.1.1',
43+
segment: 'test-segment',
4244
specialField: 'special user field',
4345
specialFieldNumber: 418,
4446
});

src/js/user.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { User } from '@sentry/types';
2+
3+
/** Requires all the keys defined on User interface to be present on an object */
4+
export type RequiredKeysUser = { [P in keyof Required<User>]: User[P] | undefined; };

src/js/wrapper.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
} from './definitions';
2222
import { isHardCrash } from './misc';
2323
import { ReactNativeOptions } from './options';
24+
import { RequiredKeysUser } from './user';
2425
import { utf8ToBytes } from './vendor';
2526

2627
const RNSentry = NativeModules.RNSentry as SentryNativeBridgeModule | undefined;
@@ -279,21 +280,23 @@ export const NATIVE: SentryNativeWrapper = {
279280
throw this._NativeClientError;
280281
}
281282

282-
// separate and serialze all non-default user keys.
283-
let defaultUserKeys = null;
284-
let otherUserKeys = null;
283+
// separate and serialize all non-default user keys.
284+
let userKeys = null;
285+
let userDataKeys = null;
285286
if (user) {
286-
const { id, ip_address, email, username, ...otherKeys } = user;
287-
defaultUserKeys = this._serializeObject({
288-
email,
287+
const { id, ip_address, email, username, segment, ...otherKeys } = user;
288+
const requiredUser: RequiredKeysUser = {
289289
id,
290290
ip_address,
291+
email,
291292
username,
292-
});
293-
otherUserKeys = this._serializeObject(otherKeys);
293+
segment,
294+
};
295+
userKeys = this._serializeObject(requiredUser);
296+
userDataKeys = this._serializeObject(otherKeys);
294297
}
295298

296-
RNSentry.setUser(defaultUserKeys, otherUserKeys);
299+
RNSentry.setUser(userKeys, userDataKeys);
297300
},
298301

299302
/**

0 commit comments

Comments
 (0)