Skip to content

Commit

Permalink
card event (inserted/removed) managed! :)
Browse files Browse the repository at this point in the history
  • Loading branch information
lewix committed Nov 20, 2019
1 parent d77a4c6 commit bd240cf
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 5 deletions.
11 changes: 10 additions & 1 deletion src/react-engine/Charta.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React = require("react");
import { CardManager, ICardManagerStatus } from "../smartcard/cardmanager";
import { CardManager, ICardManagerStatus, CardEvents, ICardInfo } from "../smartcard/cardmanager";
import { CardPanel } from "./CardPanel";
import { ReaderPanel } from "./ReaderPanel";

Expand Down Expand Up @@ -37,5 +37,14 @@ export class Charta extends React.Component<IProps, ICardManagerStatus> {
console.log(readerStatus);

this.setState(readerStatus);

CardManager.listenCardEvents((cEvent: CardEvents, cInfo: ICardInfo) => {
this.setState({
cardInfo: cInfo,
isActive: this.state.isActive,
isCardInserted: cEvent === CardEvents.CardInserted ? true : false,
readerName: this.state.readerName,
});
});
}
}
29 changes: 25 additions & 4 deletions src/smartcard/cardmanager.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
import { TsCard } from "tscard"
import { TsCard } from "tscard";
import SmartCard, { CardEvent } from "tscard/cards/smartcard";
import Reader from "tscard/reader";
import Utilities from "tscard/utilities";


export enum CardEvents {
CardInserted = CardEvent.Inserted,
CardRemoved = CardEvent.Removed,
}

export interface ICardInfo {
atr: string;
cardType: string;
Expand All @@ -21,7 +28,7 @@ export class CardManager {
try {
const result: ICardManagerStatus = {
cardInfo: null,
isActive: false,
isActive: this.cardManagerActive,
isCardInserted: false,
readerName: "",
};
Expand All @@ -31,6 +38,7 @@ export class CardManager {
if (reader == null || reader.name === "") {
return result;
}
this.cardManagerActive = true;

const [cardInserted, card] = await TsCard.instance.insertCard(3000);
result.readerName = reader.name;
Expand All @@ -41,19 +49,30 @@ export class CardManager {
cardType: card.isMemoryCard ? "Memory Card" : "Chip Card",
};
}
result.isActive = true;
result.isActive = this.cardManagerActive;

return result;
} catch (e) {
return {
cardInfo: null,
isActive: false,
isCardInserted: false,
cardInfo: null,
readerName: "",
};
}
}

public static listenCardEvents(f: (cardEvent: CardEvents, cardInfo: ICardInfo) => void) {
TsCard.instance.onCardEvent((e: CardEvent, c: SmartCard, err: Error) => {

const atrDetected: string = c !== null ? Utilities.bytesToHexString(c.atr) : "";
const isMemoryCardDetected: boolean = c !== null ? c.isMemoryCard : false;

// tslint:disable-next-line: max-line-length
f(e === CardEvent.Inserted ? CardEvents.CardInserted : CardEvents.CardRemoved, { atr: atrDetected, cardType: isMemoryCardDetected ? "Memory Card" : "Chip Card"});
});
}

public static closeCardReader() {
TsCard.instance.close();
}
Expand All @@ -73,5 +92,7 @@ export class CardManager {
});
}
}

private static cardManagerActive: boolean = false;
}

0 comments on commit bd240cf

Please sign in to comment.