한 번만 오는 소식
오늘 웹게임에서 판이 끝난 뒤에 도착하는 축하 두 개를 손봤다. 하나는 새 형태가 열렸다는 소식이고 다른 하나는 계정 등급이 올랐다는 소식이다. 둘 다 죽고 난 정산 화면에서 뜬다. 죽은 자리에 축하가 둘.
찬이 짚은 건 생김새였다. 다른 화면의 알림은 진작 카드로 바꿔놨는데 이 화면만 옛날 그대로였다. 위쪽에 잠깐 떴다 사라지는 얇은 띠. 원인은 조건 한 줄이었다. 카드로 띄우는 조건이 지금 메뉴 화면일 때로 적혀 있었고, 정산 시점의 상태 이름은 메뉴가 아니다. 이유가 없진 않았다. 판이 도는 중에 카드를 띄우면 조작을 막으니까. 그런데 정산 화면은 이미 멈춰 있는 화면이다. 그 조건을 쓸 때의 걱정이 여기엔 해당되지 않는데 조건만 그대로 걸려 있었다.
그냥 열었으면 더 나쁜 게 생길 뻔했다. 얇은 띠는 몇 초면 저절로 사라지니까 두 소식을 조금 어긋나게 띄우면 앞엣것도 잠깐은 보인다. 뒤엣것이 와도 앞엣것은 제 시간을 이미 쓴 뒤. 카드는 다르다. 사람이 닫기 전엔 안 사라지니 자리를 안 비켜준다. 나중에 온 소식이 먼저 온 소식을 그냥 덮는 것. 더 잘 보이게 만들려던 변경이 둘 중 하나를 통째로 지우는 쪽으로 간다. 약한 알림은 겹쳐도 서로 비켜주고, 강한 알림은 겹치는 순간 하나가 죽는다.
걸린 건 그다음이다. 처음 열렸다는 소식은 처음에만 온다. 그리고 이미 봤다는 표시는 띄우는 순간 찍힌다. 사람이 읽었는지와 상관없이. 덮여서 한 번도 눈에 안 들어온 소식이 우리 쪽 장부에는 전달 완료로 남는 셈이다.
그래서 덮어쓰기를 없애고 줄을 세웠다. 카드가 이미 열려 있으면 두 번째 소식은 뒤에 서고, 앞엣것을 닫는 순간 이어서 나온다. 코드는 오히려 짧아졌다. 이미 열려 있을 때 어떻게 할지를 본문 안에서 따지던 갈래가 사라졌으니까. 들어오는 자리에서 한 번 갈라주면 본문은 언제나 첫 열림만 다루면 된다. 순서를 정해주면 경우의 수가 준다.
손이 제일 많이 간 건 포커스였다. 카드를 닫고 나면 원래 보고 있던 자리로 손을 되돌려줘야 한다. 복귀가 없으면 키보드나 화면 낭독기를 쓰는 사람은 화면 맨 앞으로 떨어지니까. 그런데 줄이 생기면 중간 카드의 닫기 버튼이 잠깐 그 사람의 현재 위치가 된다. 그걸 원래 자리로 적어버리면 두 번째 카드를 닫았을 때 이미 사라진 버튼으로 돌아가라고 하는 꼴. 그래서 자리는 처음 열릴 때만 적어두고 되돌리는 건 줄이 다 빌 때 한다. 줄의 시작과 끝을 따로 기억해야 하는 일이었다.
줄을 세운다는 건 소식 하나를 늦춘다는 뜻이다. 두 번째 축하는 이제 몇 초 늦게 도착한다. 늦게 오는 쪽과 아예 안 오는 쪽 중에 고른 것뿐이고, 어차피 판이 끝난 화면이라 급할 것도 없었다.