diff --git a/spec/unit/location.spec.ts b/spec/unit/location.spec.ts index 823149960..a58b605e6 100644 --- a/spec/unit/location.spec.ts +++ b/spec/unit/location.spec.ts @@ -17,7 +17,7 @@ limitations under the License. import { makeLocationContent } from "../../src/content-helpers"; import { ASSET_NODE_TYPE, - ASSET_TYPE_SELF, + LocationAssetType, LOCATION_EVENT_TYPE, TIMESTAMP_NODE_TYPE, } from "../../src/@types/location"; @@ -33,14 +33,14 @@ describe("Location", function() { uri: "geo:foo", description: undefined, }); - expect(ASSET_NODE_TYPE.findIn(loc)).toEqual({ type: ASSET_TYPE_SELF }); + expect(ASSET_NODE_TYPE.findIn(loc)).toEqual({ type: LocationAssetType.Self }); expect(TEXT_NODE_TYPE.findIn(loc)).toEqual("txt"); expect(TIMESTAMP_NODE_TYPE.findIn(loc)).toEqual(134235435); }); it("should create a valid location with explicit properties", function() { const loc = makeLocationContent( - "txxt", "geo:bar", 134235436, "desc", "m.something"); + "txxt", "geo:bar", 134235436, "desc", LocationAssetType.Pin); expect(loc.body).toEqual("txxt"); expect(loc.msgtype).toEqual("m.location"); @@ -49,7 +49,7 @@ describe("Location", function() { uri: "geo:bar", description: "desc", }); - expect(ASSET_NODE_TYPE.findIn(loc)).toEqual({ type: "m.something" }); + expect(ASSET_NODE_TYPE.findIn(loc)).toEqual({ type: LocationAssetType.Pin }); expect(TEXT_NODE_TYPE.findIn(loc)).toEqual("txxt"); expect(TIMESTAMP_NODE_TYPE.findIn(loc)).toEqual(134235436); }); diff --git a/src/@types/location.ts b/src/@types/location.ts index e1c2601be..09ef31171 100644 --- a/src/@types/location.ts +++ b/src/@types/location.ts @@ -27,7 +27,10 @@ export const ASSET_NODE_TYPE = new UnstableValue("m.asset", "org.matrix.msc3488. export const TIMESTAMP_NODE_TYPE = new UnstableValue("m.ts", "org.matrix.msc3488.ts"); -export const ASSET_TYPE_SELF = "m.self"; +export enum LocationAssetType { + Self = "m.self", + Pin = "m.pin", +} /* From the spec at: * https://github.com/matrix-org/matrix-doc/blob/matthew/location/proposals/3488-location.md @@ -60,7 +63,7 @@ export interface ILocationContent extends IContent { description?: string; }; [ASSET_NODE_TYPE.name]: { - type: string; + type: LocationAssetType; }; [TEXT_NODE_TYPE.name]: string; [TIMESTAMP_NODE_TYPE.name]: number; diff --git a/src/content-helpers.ts b/src/content-helpers.ts index 6621520a7..89955bbae 100644 --- a/src/content-helpers.ts +++ b/src/content-helpers.ts @@ -20,8 +20,8 @@ import { MsgType } from "./@types/event"; import { TEXT_NODE_TYPE } from "./@types/extensible_events"; import { ASSET_NODE_TYPE, - ASSET_TYPE_SELF, ILocationContent, + LocationAssetType, LOCATION_EVENT_TYPE, TIMESTAMP_NODE_TYPE, } from "./@types/location"; @@ -121,7 +121,7 @@ export function makeLocationContent( uri: string, ts: number, description?: string, - assetType?: string, + assetType?: LocationAssetType, ): ILocationContent { return { "body": text, @@ -132,7 +132,7 @@ export function makeLocationContent( description, }, [ASSET_NODE_TYPE.name]: { - type: assetType ?? ASSET_TYPE_SELF, + type: assetType ?? LocationAssetType.Self, }, [TEXT_NODE_TYPE.name]: text, [TIMESTAMP_NODE_TYPE.name]: ts,