Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Live location sharing: fix safari timestamps pt 2 (#8443)
Browse files Browse the repository at this point in the history
* handle safari cocoa core data timestamps

Signed-off-by: Kerry Archibald <kerrya@element.io>

* actually fix safari timestamp issue properly

Signed-off-by: Kerry Archibald <kerrya@element.io>

* actually fix safari timestamp issue properly

Signed-off-by: Kerry Archibald <kerrya@element.io>
  • Loading branch information
Kerry authored Apr 29, 2022
1 parent fddbc42 commit e233cf5
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/utils/beacon/geolocation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,8 @@ export const getGeoUri = (position: GenericPosition): string => {
};

export const mapGeolocationPositionToTimedGeo = (position: GeolocationPosition): TimedGeoUri => {
return { timestamp: position.timestamp, geoUri: getGeoUri(genericPositionFromGeolocation(position)) };
const genericPosition = genericPositionFromGeolocation(position);
return { timestamp: genericPosition.timestamp, geoUri: getGeoUri(genericPosition) };
};

/**
Expand Down
8 changes: 3 additions & 5 deletions test/stores/OwnBeaconStore-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import {
} from "../test-utils";
import {
makeBeaconInfoEvent,
makeGeolocationPosition,
mockGeolocation,
watchPositionMockImplementation,
} from "../test-utils/beacon";
Expand Down Expand Up @@ -70,7 +69,6 @@ describe('OwnBeaconStore', () => {
const room2Id = '$room2:server.org';

// returned by default geolocation mocks
const defaultLocation = makeGeolocationPosition({});
const defaultLocationUri = 'geo:54.001927,-8.253491;u=1';

// beacon_info events
Expand Down Expand Up @@ -245,7 +243,7 @@ describe('OwnBeaconStore', () => {
expect(mockClient.sendEvent).not.toHaveBeenCalled();
});

it('does geolocation and sends location immediatley when user has live beacons', async () => {
it('does geolocation and sends location immediately when user has live beacons', async () => {
localStorageGetSpy.mockReturnValue(JSON.stringify([
alicesRoom1BeaconInfo.getId(),
alicesRoom2BeaconInfo.getId(),
Expand All @@ -261,12 +259,12 @@ describe('OwnBeaconStore', () => {
expect(mockClient.sendEvent).toHaveBeenCalledWith(
room1Id,
M_BEACON.name,
makeBeaconContent(defaultLocationUri, defaultLocation.timestamp, alicesRoom1BeaconInfo.getId()),
makeBeaconContent(defaultLocationUri, now, alicesRoom1BeaconInfo.getId()),
);
expect(mockClient.sendEvent).toHaveBeenCalledWith(
room2Id,
M_BEACON.name,
makeBeaconContent(defaultLocationUri, defaultLocation.timestamp, alicesRoom2BeaconInfo.getId()),
makeBeaconContent(defaultLocationUri, now, alicesRoom2BeaconInfo.getId()),
);
});
});
Expand Down
7 changes: 6 additions & 1 deletion test/utils/beacon/geolocation-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,16 @@ describe('geolocation utilities', () => {
let geolocation;
const defaultPosition = makeGeolocationPosition({});

// 14.03.2022 16:15
const now = 1647270879403;

beforeEach(() => {
geolocation = mockGeolocation();
jest.spyOn(Date, 'now').mockReturnValue(now);
});

afterEach(() => {
jest.spyOn(Date, 'now').mockRestore();
jest.spyOn(logger, 'error').mockRestore();
});

Expand Down Expand Up @@ -136,7 +141,7 @@ describe('geolocation utilities', () => {
describe('mapGeolocationPositionToTimedGeo()', () => {
it('maps geolocation position correctly', () => {
expect(mapGeolocationPositionToTimedGeo(defaultPosition)).toEqual({
timestamp: 1647256791840, geoUri: 'geo:54.001927,-8.253491;u=1',
timestamp: now, geoUri: 'geo:54.001927,-8.253491;u=1',
});
});
});
Expand Down

0 comments on commit e233cf5

Please sign in to comment.