Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e23dcb9ae | ||
|
|
db916cafcb | ||
|
|
1dd7836b8b |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_circle_k_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_circle_k_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_essar_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_essar_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_gleaner_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_gleaner_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_highland_fuels_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_highland_fuels_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 636 B |
|
After Width: | Height: | Size: 970 B |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_maxol_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_maxol_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_murco_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_murco_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_spar_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_spar_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_the_co_operative_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_the_co_operative_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_valero_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_valero_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "brand_welcome_break_2x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "brand_welcome_break_3x.png",
|
||||||
|
"idiom": "universal",
|
||||||
|
"scale": "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"author": "xcode",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
@@ -789,14 +789,14 @@ struct StationRow: View {
|
|||||||
.padding(5)
|
.padding(5)
|
||||||
} else {
|
} else {
|
||||||
Image(systemName: "fuelpump.fill")
|
Image(systemName: "fuelpump.fill")
|
||||||
.font(.system(size: 22))
|
.font(.system(size: 22, weight: .semibold))
|
||||||
.foregroundStyle(.white)
|
.foregroundStyle(Color.black.opacity(0.82))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.frame(width: 46, height: 46)
|
.frame(width: 46, height: 46)
|
||||||
.background(Circle().fill(.white))
|
.background(Circle().fill(Color.white))
|
||||||
.clipShape(Circle())
|
.clipShape(Circle())
|
||||||
.overlay(Circle().stroke(Color.primary.opacity(0.08), lineWidth: 1))
|
.overlay(Circle().stroke(Color.primary.opacity(0.10), lineWidth: 1))
|
||||||
.shadow(color: .black.opacity(0.08), radius: 2, y: 1)
|
.shadow(color: .black.opacity(0.08), radius: 2, y: 1)
|
||||||
|
|
||||||
// MIDDLE — name, full address, distance
|
// MIDDLE — name, full address, distance
|
||||||
|
|||||||
@@ -233,11 +233,25 @@ final class BrandTests: XCTestCase {
|
|||||||
XCTAssertEqual(station(brand: "JET").brandImageName, "brand_jet")
|
XCTAssertEqual(station(brand: "JET").brandImageName, "brand_jet")
|
||||||
XCTAssertEqual(station(brand: "TEXACO").brandImageName, "brand_texaco")
|
XCTAssertEqual(station(brand: "TEXACO").brandImageName, "brand_texaco")
|
||||||
XCTAssertEqual(station(brand: "APPLEGREEN").brandImageName, "brand_applegreen")
|
XCTAssertEqual(station(brand: "APPLEGREEN").brandImageName, "brand_applegreen")
|
||||||
|
XCTAssertEqual(station(brand: "VALERO").brandImageName, "brand_valero")
|
||||||
|
XCTAssertEqual(station(brand: "WELCOME BREAK").brandImageName, "brand_welcome_break")
|
||||||
|
XCTAssertEqual(station(brand: "THE CO-OPERATIVE").brandImageName, "brand_the_co_operative")
|
||||||
|
XCTAssertEqual(station(brand: "CO-OP").brandImageName, "brand_the_co_operative")
|
||||||
|
XCTAssertEqual(station(brand: "MURCO").brandImageName, "brand_murco")
|
||||||
|
XCTAssertEqual(station(brand: "GLEANER").brandImageName, "brand_gleaner")
|
||||||
|
XCTAssertEqual(station(brand: "HIGHLAND FUELS").brandImageName, "brand_highland_fuels")
|
||||||
|
XCTAssertEqual(station(brand: "CIRCLE K").brandImageName, "brand_circle_k")
|
||||||
|
XCTAssertEqual(station(brand: "MAXOL").brandImageName, "brand_maxol")
|
||||||
|
XCTAssertEqual(station(brand: "SPAR").brandImageName, "brand_spar")
|
||||||
|
XCTAssertEqual(station(brand: "ESSAR").brandImageName, "brand_essar")
|
||||||
|
XCTAssertEqual(station(brand: "EG ON THE MOVE").brandImageName, "brand_esso")
|
||||||
|
XCTAssertEqual(station(brand: "GO FORECOURT").brandImageName, "brand_gulf")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testUnknownBrand() {
|
func testUnknownBrandUsesGenericFuelPumpFallbackInUI() {
|
||||||
XCTAssertNil(station(brand: "WELCOME BREAK").brandImageName)
|
XCTAssertNil(station(brand: "TOTAL HARVEST ENERGY").brandImageName)
|
||||||
XCTAssertNil(station(brand: "VALERO").brandImageName)
|
XCTAssertNil(station(brand: "SOLO").brandImageName)
|
||||||
|
XCTAssertNil(station(brand: "PACE").brandImageName)
|
||||||
XCTAssertNil(station(brand: "").brandImageName)
|
XCTAssertNil(station(brand: "").brandImageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -242,21 +242,37 @@ struct FuelStation: Identifiable, Codable, Equatable {
|
|||||||
var brandImageName: String? {
|
var brandImageName: String? {
|
||||||
let raw = brand.uppercased()
|
let raw = brand.uppercased()
|
||||||
let known: [(String, String)] = [
|
let known: [(String, String)] = [
|
||||||
|
("CIRCLE K", "brand_circle_k"),
|
||||||
|
("MAXOL", "brand_maxol"),
|
||||||
|
("SPAR", "brand_spar"),
|
||||||
("SHELL", "brand_shell"),
|
("SHELL", "brand_shell"),
|
||||||
("SAINSBURY", "brand_sainsburys"),
|
("SAINSBURY", "brand_sainsburys"),
|
||||||
("MORRISONS", "brand_morrisons"),
|
("MORRISONS", "brand_morrisons"),
|
||||||
("APPLEGREEN", "brand_applegreen"),
|
("APPLEGREEN", "brand_applegreen"),
|
||||||
("TESCO", "brand_tesco"),
|
("TESCO", "brand_tesco"),
|
||||||
("TEXACO", "brand_texaco"),
|
("TEXACO", "brand_texaco"),
|
||||||
|
("ESSAR", "brand_essar"),
|
||||||
("ESSO", "brand_esso"),
|
("ESSO", "brand_esso"),
|
||||||
("ASDA", "brand_asda"),
|
("ASDA", "brand_asda"),
|
||||||
("GULF", "brand_gulf"),
|
("GULF", "brand_gulf"),
|
||||||
|
("VALERO", "brand_valero"),
|
||||||
|
("WELCOME BREAK", "brand_welcome_break"),
|
||||||
|
("THE CO-OPERATIVE", "brand_the_co_operative"),
|
||||||
|
("CO-OPERATIVE", "brand_the_co_operative"),
|
||||||
|
("CO OPERATIVE", "brand_the_co_operative"),
|
||||||
|
("CO-OP", "brand_the_co_operative"),
|
||||||
|
("CO OP", "brand_the_co_operative"),
|
||||||
|
("MURCO", "brand_murco"),
|
||||||
|
("GLEANER", "brand_gleaner"),
|
||||||
|
("HIGHLAND FUELS", "brand_highland_fuels"),
|
||||||
("BP", "brand_bp"),
|
("BP", "brand_bp"),
|
||||||
("JET", "brand_jet"),
|
("JET", "brand_jet"),
|
||||||
]
|
]
|
||||||
for (needle, asset) in known where raw.contains(needle) {
|
for (needle, asset) in known where raw.contains(needle) {
|
||||||
return asset
|
return asset
|
||||||
}
|
}
|
||||||
|
if raw.contains("EG ON THE MOVE") { return "brand_esso" }
|
||||||
|
if raw == "GO" || raw.contains("GO FORECOURT") || raw.contains("GO FUEL") { return "brand_gulf" }
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||